检查字符串是否在数组中

时间:2016-11-03 18:48:24

标签: python list unicode

我正在尝试检查某些字符串是否在一个数组中,如下所示:

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)

我如何解析数组中的字符串看起来像普通的字符串?

2 个答案:

答案 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

两者都保持相同的解码值