if emp in like_list[j]:
TypeError: coercing to Unicode: need string or buffer, list found爲什麼我在這裏得到TypeError?
兩個emp
和like_list
是含有字符串列表。
if emp in like_list[j]:
TypeError: coercing to Unicode: need string or buffer, list found爲什麼我在這裏得到TypeError?
兩個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: