簡體   English   中英

python unicode 用空字符串替換反斜杠 u

[英]python unicode replace backslash u with an empty string

我正在清理 Pandas 數據框並遇到 unicode 字符串,里面有一個帶有反斜杠的u ,而不是我需要替換的,例如

u'\u2014'.replace('\u','')
Result: u'\u2014'

我嘗試將其編碼為utf-8然后對其進行解碼,但這沒有用,我覺得必須有更簡單的方法來解決這個問題。

熊貓代碼

merged['Rank World Bank'] = merged['Rank World Bank'].astype(str)

錯誤

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 0: ordinal not in range(128)

u'\—'實際上是- 這不是一個數字。 這是一個utf-8字符。 嘗試使用 print 關鍵字來打印它。 你會知道

這是 ipython 中的輸出:

In [4]: print("val = ", u'\u2014')
val =  —

根據您的評論,這是您做錯的地方“-”與“EM Dash”Unicode 字符不同(u'\—')

所以,你應該做到以下幾點

print(u'\u2014'.replace("\u2014",""))

這會起作用

編輯:由於您使用的是 python 2.x,您必須使用 utf-8 對其進行編碼,如下所示

u'\u2014'.encode('utf-8').decode('utf-8').replace("-","")

是的,因為它將 '2014' 后跟 '\\u\u0026#39; 作為 unicode 字符串而不是字符串文字。

可以提供幫助的事情:

  • 使用 .encode('ascii', 'ignore') 轉換為 ascii
  • 當您使用 Pandas 時,您可以使用 'encoding' 參數並在那里傳遞 'ascii'。
  • 改為這樣做: u'\—'.replace(u'\—', u'2014').encode('ascii', 'ignore')

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM