Заменить новые строки в строке Unicode
Я пытаюсь заменить символы новой строки в строке unicode и, кажется, не хватает некоторых магических кодов.
В моем конкретном примере я работаю над AppEngine и пытаюсь помещать заголовки с HTML-страниц в db.StringProperty()
в моей модели.
Итак, я делаю что-то вроде:
link.title = unicode(page_title,"utf-8").replace('\n','').replace('\r','')
и я получаю:
Property title is not multi-line
Существуют ли другие коды, которые я должен использовать для замены?
Ответы
Ответ 1
Попробуйте ''.join(unicode(page_title, 'utf-8').splitlines())
. splitlines()
должен позволить стандартной библиотеке заботиться обо всех возможных сумасшедших разрывах Unicode, а затем вы просто присоединяете их всех вместе с пустым для получения однострочной версии.
Ответ 2
Python использует эти символы для разделения в unicode.splitlines()
:
- U + 000A LINE FEED (\n)
- U + 000D CARRIAGE RETURN (\ r)
- U + 001C FILE SEPARATOR
- U + 001D GROUP SEPARATOR
- U + 001E ЗАПИСЬ СЕПАРАТОРА
- U + 0085 NEXT LINE
- U + 2028 LINE SEPARATOR
- U + 2029 ПАРАГРАФНЫЙ СЕПАРАТОР
Как говорит Хэнк, использование splitlines()
позволит Python заботиться обо всех деталях для вас, но если вам нужно сделать это вручную, то это должен быть полный список.
Ответ 3
Было бы полезно напечатать repr()
page_title, который считается многострочным, но очевидным кандидатом будет '\r'
.