Подтвердить что ты не робот

Заменить новые строки в строке Unicode

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

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

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

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

и я получаю:

Property title is not multi-line

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

4b9b3361

Ответ 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'.