我想写一些简单的Python脚本,可以在不同的Python版本上不加修改地使用,但是我在字符串方面遇到了问题。。。你知道吗
text = get_data()
phrases = [ "Soggarth Eogham O'Growney ,克尔・德怀尔", "capitis #3 病态上升涨大的繁殖性勃现", "IsoldeIsult、第一任威尔士亲王" ]
for item in phrases:
if item not in text: **# 3.3 ok. 2.7 UnicodeDecodeError**
print ("Expected phrase '" + item + "' not found")
上面的代码在3.3中起作用。当我试着在2.7下运行时
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 27: ordinal not in range(128)
通过将第一行更改为
text = get_data().encode('utf-8')
但是,这在3.3上不起作用。有什么办法可以用一个版本的源代码来实现这一点吗? Python怪。你知道吗
似乎
get_data()
将返回Unicode字符串。出现错误的原因是将Unicode字符串与8位字符串串联,强制转换(默认情况下,转换将使用ASCII编解码器完成),并且由于数据包含非ASCII字符,因此转换失败。你知道吗使上述代码正常工作的最佳方法是确保所有字符串都是Unicode,方法是在它们前面加上u“”:
但是,这只适用于Python2.x和Python3.3。如果您需要使用python3.2或3.1,那么您需要有一个方法,在python2下将其转换为Unicode,但在python3下什么都不做(因为它已经是Unicode了)。你知道吗
这种函数通常称为
u()
,您可以这样定义它:相关问题 更多 >
编程相关推荐