Заменить символы новой строки в строке Юникода - PullRequest
12 голосов
/ 04 февраля 2010

Я пытаюсь заменить символы новой строки в строке Unicode и, похоже, отсутствуют некоторые магические коды.

Мой конкретный пример - я работаю над AppEngine и пытаюсь поместить заголовки с HTML-страниц в db.StringProperty() в моей модели.

Так что я делаю что-то вроде:

link.title = unicode(page_title,"utf-8").replace('\n','').replace('\r','')

и я получаю:

Property title is not multi-line

Есть ли другие коды, которые я должен использовать для замены?

Ответы [ 3 ]

19 голосов
/ 04 февраля 2010

Попробуйте ''.join(unicode(page_title, 'utf-8').splitlines()). splitlines() должен позволить стандартной библиотеке позаботиться обо всех возможных сумасшедших переносах строк Unicode, а затем просто объединить их все вместе с пустой строкой, чтобы получить однострочную версию.

8 голосов
/ 04 февраля 2010

Python использует эти символы для разделения на unicode.splitlines():

  • U + 000A LINE FEED (\ n)
  • U + 000D ВОЗВРАТ ЗАРЯДКИ (\ r)
  • U + 001C РАЗДЕЛИТЕЛЬ ФАЙЛА
  • U + 001D ГРУППОВОЙ СЕПАРАТОР
  • U + 001E РАЗДЕЛИТЕЛЬ ЗАПИСИ
  • U + 0085 СЛЕДУЮЩАЯ ЛИНИЯ
  • U + 2028 ЛИНИЙ СЕПАРАТОР
  • U + 2029 ПАРАГРАФИЧЕСКИЙ СЕПАРАТОР

Как говорит Хэнк, использование splitlines() позволит Python позаботиться обо всех деталях за вас, но если вам нужно сделать это вручную, тогда это будет полный список.

0 голосов
/ 04 февраля 2010

Было бы полезно напечатать repr() заголовка страницы, который считается многострочным, но очевидным кандидатом будет '\r'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...