这是我的基本代码。
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()将字典作为列表 或者反之亦然。
答案 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,这样你就可以比较字符串,而不用担心。