2017-04-21 78 views
0

我對我的感覺就像一個非常基本的問題,但對於我的生活我無法弄清楚。Python re.sub()和unicode

我有一大堆文本我正在經歷和轉換爲國際音標。我使用re.sub()方法很多,在很多情況下,這意味着用一個unicode類型的字符來替換字符串類型的字符。例如:

for row in responsesIPA: 
    re.sub("3", u"\u0259", row) 

我得到TypeError:期望的字符串或緩衝區。關於Python的文檔重新說,替換的類型必須與你所搜索的類型相匹配,所以也許這就是問題所在?我試圖把str()放在u「\ u0259」的周圍,但是我仍然遇到了類型錯誤。有沒有辦法讓我做這個替換?

回答

1

你得到的錯誤是告訴你「行」不是有效的字符串或緩衝區(str,bytes,unicode,任何可讀的),你需要仔細檢查存儲的在前面加上print(row)

只是爲了證明這種情況下,這樣做將工作:

import re 
print(re.sub("3", u"\u0259", "12345")) 
+0

是的!每一個「行」都來自.csv文件,我不知道我必須將它們轉換爲字符串。這工作 - 謝謝你! – bkula