if emp in like_list[j]:
类型错误:强制到 Unicode:需要字符串或缓冲区,找到列表
emp
和 like_list
都是包含字符串的列表。
因为emp
和like_list
都是列表,所以您实际上是在列表中查找列表。
如果您尝试匹配列表emp
中的任何元素,则可以像这样迭代列表:
for element in emp:
if element in like_list:
--do something--
else:
--do something else--
或者,如果like_list
是列表列表,则if
语句将起作用。
如果 emp
和 like_list
都是字符串列表,则表达式 emp in like_list[j]
正在检查列表是否是单个字符串的成员。当我用下面的代码进行测试时,我得到了一个略有不同的TypeError
:
>>> emp = ["foo", "bar"]
>>> like_list = ["baz", "quux"]
>>> if emp in like_list[0]:
... print "found"
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not list
这表示您不能测试非字符串中的成员身份。我认为解决这个问题会很容易,但并不完全清楚你想做什么。
如果要检查字符串like_list[j]
是否具有emp
中的字符串之一作为子字符串,请使用:
if any(s in like_list[j] for s in emp):
相反,如果您想查看like_list[j]
是否等于emp
中的一个字符串,则需要转动in
表达式:
if like_list[j] in emp: