if emp in like_list[j]:
TypeError: Unicode への強制: 文字列またはバッファが必要です。リストが見つかりました
emp
とはどちらもlike_list
文字列を含むリストです。
if emp in like_list[j]:
TypeError: Unicode への強制: 文字列またはバッファが必要です。リストが見つかりました
emp
とはどちらもlike_list
文字列を含むリストです。
emp
とはどちらlike_list
もリストであるため、基本的にはリスト内のリストを探しています。
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]
文字列に文字列の 1 つが部分文字列として含まれているかどうかを確認する場合はemp
、次を使用します。
if any(s in like_list[j] for s in emp):
like_list[j]
代わりに、 が のいずれかの文字列と等しいかどうかを確認したい場合は、式emp
を逆にする必要があります。in
if like_list[j] in emp: