我正在尝试检查某些字符串是否在一个数组中,如下所示:
intact_columns = [...]
for key, value in obj.iteritems():
if not key in intact_columns:
print key
问题是:数组中有类似这样的项目:Reten\xc3\xa7\xc3\xa3o (RET)
我正在迭代的字符串是这样的:Retenção (RET)
我如何解析数组中的字符串看起来像普通的字符串?
答案 0 :(得分:1)
首先你真的需要了解编码...猜测数组中的项目是utf8 ...你正在检查apear的项目是unicode
if key.encode("utf8") in intact_columns:
请注意,我不知道正在使用什么编码...(但utf8通常是一个非常安全的猜测)
关于编码
bytestring.decode('utf8') # -> results in unicode
unicodestr.encode('utf8') # -> results in bytestring
在python3中你不能编码/解码,除非它是合适的类型(unicode / bytestring)。在python2中,如果你提出错误的东西,它将尝试为你隐式编码或解码...这就是你遇到问题的地方
答案 1 :(得分:1)
问题是因为您在两个字符串中使用不同的编码。我不确定编码类型。将这些解码为 ID | RX
------------------
1 | 1
1 | 2
2 | 1
2 | 2
(或 utf-16 )然后检查是安全的。例如:
utf-8
两者都保持相同的解码值