检查字符串是否在数组中

2024-09-28 03:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查是否有字符串在一个数组中,例如:

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)

如何将数组中的字符串解析为普通字符串?在


Tags: columnskey字符串inobjforifvalue
2条回答

问题是因为您在两个字符串中使用了不同的编码。我不确定编码类型。这是安全的。例如:

>>> 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通常是一个相当安全的猜测)

关于编码的旁白

^{pr2}$

在python3中,除非它是适当的类型(unicode/bytestring),否则您无法编码/解码。在python2中,如果你交错了东西,它会尝试隐式地为你编码或解码。。。这就是你遇到问题的地方

相关问题 更多 >

    热门问题