2017-04-21 77 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