2010-02-04 127 views
12

我試圖在unicode字符串中替換換行符,並且似乎缺少一些魔法代碼。在Unicode字符串中替換換行符

我特別的例子是我正在研究AppEngine,並試圖在我的模型中將HTML頁面的標題放入db.StringProperty()

所以我做這樣的事情:

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

,我也得到:

Property title is not multi-line 

還有沒有其他的代碼,我應該使用的更換?

+0

打印'page_title'的'repr()'並查看它包含哪些特殊字符。 –

回答

17

嘗試''.join(unicode(page_title, 'utf-8').splitlines())splitlines()應該讓標準庫處理所有可能的瘋狂的Unicode換行符,然後您只需將它們全部與空字符串一起加入以獲得單行版本。

+1

謝謝!這就像一個冠軍。 –

-1

打印被認爲是多行的page_title的repr()會很有用,但明顯的候選應該是'\r'

+0

我更新了我的示例以包含回車(相同的結果)。 –

8

的Python在unicode.splitlines()使用這些字符分割:

  • U + 000A換行(\ n)的
  • U + 000D回車(\ R)
  • U + 001C文件分隔
  • U + 001D組分隔
  • U + 001E記錄分隔
  • U + 0085 NEXT LINE
  • U + 2028行分隔符
  • U + 2029段落分隔

漢克說,使用splitlines()會讓Python的照顧所有的細節,爲你,但如果你需要做手工,那麼這應該是完整的列表。

+0

這很有幫助。但看起來像'splitlines()'爲我做了。 –

+0

不用擔心;我認爲'splitlines()'是正確的答案;這是爲了防止你真的需要這份清單。 –