Python:检查列表每行中的每个单词,并检查该单词是否与字典中的键相同

时间:2014-07-10 02:08:47

标签: python list python-2.7 dictionary

这是我的基本代码。

for key in dictionary: #Here key is the actually variable defined in key:value pair
  for line in list:
    if key in line: 
        print key
我得到的

错误值是

如果键在线: TypeError:强制转换为Unicode:需要字符串或缓冲区,找到int

我用它来编码Non-ascii值

unicode = u"\xc3\x81"
encoded= unicode.encode('utf-8')

我注意到某些类型(键)是int,所以我希望上面的代码修复了这个。

我查看了许多资源,并且没有确信能够检查字典中关键字字符串列表中的每个单词。

此外,我被告知不要通过dictionary.keys()将字典作为列表 或者反之亦然。

2 个答案:

答案 0 :(得分:0)

似乎缺少一些代码。最有可能发生的事情是你的代码中的某个地方连接了一个unicode字符串和一个int:

a = u"unicode str"
b = 5

print(a + b)

旁注 - 关于代码:

unicode = u"\xc3\x81"
encoded= unicode.encode('utf-8')

这看起来不对。你的第一行肯定不是unicode - 它可能是UTF-8,你想改为decode

unicode = "\xc3\x81"
encoded = unicode.decode('utf-8')
print encoded  # prints Á

答案 1 :(得分:0)

假设你有类似的东西:

mydict = {"is": 1, "the": 2}

list = ["Line is the first", "Line is the second",]

你应该尝试:

>>> for line in list:
    for w in line.split(" "):
       print("Word", w, " in key list:", w in mydict.keys())

('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'first', ' in key list:', False)
('Word', 'Line', ' in key list:', False)
('Word', 'is', ' in key list:', True)
('Word', 'the', ' in key list:', True)
('Word', 'second', ' in key list:', False)
>>>

通常Python会为你处理unicode,这样你就可以比较字符串,而不用担心。