2024-09-28 03:23:18 发布
网友
我正在检查是否有字符串在一个数组中,例如:
intact_columns = [...] for key, value in obj.iteritems(): if not key in intact_columns: print key
问题是:数组中有这样的项目:Reten\xc3\xa7\xc3\xa3o (RET)
Reten\xc3\xa7\xc3\xa3o (RET)
我迭代的字符串如下:Retenção (RET)
Retenção (RET)
如何将数组中的字符串解析为普通字符串?在
问题是因为您在两个字符串中使用了不同的编码。我不确定编码类型。这是安全的。例如:
>>> my_list = ['Reten\xc3\xa7\xc3\xa3o (RET)', 'blah blah ...'] >>> my_string = 'Retenção (RET)' >>> my_list[0].decode('utf-8') u'Reten\xe7\xe3o (RET)' >>> my_string.decode('utf-8') u'Reten\xe7\xe3o (RET)'
两者都保存相同的解码值
首先你真的需要理解编码。。。一猜数组中的项目是utf8。。。您正在检查的项目是否为unicode
if key.encode("utf8") in intact_columns:
请注意,我不知道正在使用什么编码。。。(但utf8通常是一个相当安全的猜测)
关于编码的旁白
在python3中,除非它是适当的类型(unicode/bytestring),否则您无法编码/解码。在python2中,如果你交错了东西,它会尝试隐式地为你编码或解码。。。这就是你遇到问题的地方
问题是因为您在两个字符串中使用了不同的编码。我不确定编码类型。这是安全的。例如:
两者都保存相同的解码值
首先你真的需要理解编码。。。一猜数组中的项目是utf8。。。您正在检查的项目是否为unicode
请注意,我不知道正在使用什么编码。。。(但utf8通常是一个相当安全的猜测)
关于编码的旁白
^{pr2}$在python3中,除非它是适当的类型(unicode/bytestring),否则您无法编码/解码。在python2中,如果你交错了东西,它会尝试隐式地为你编码或解码。。。这就是你遇到问题的地方
相关问题 更多 >
编程相关推荐