0
if emp in like_list[j]:

TypeError: Unicode への強制: 文字列またはバッファが必要です。リストが見つかりました

empとはどちらもlike_list文字列を含むリストです。

4

2 に答える 2

2

empとはどちらlike_listもリストであるため、基本的にはリスト内のリストを探しています。

list 内の任意の要素と一致させようとしている場合はemp、次のようにリストを反復処理できます。

for element in emp:
    if element in like_list:
        --do something--
    else:
        --do something else--

または、like_listリストのリストである場合、ifステートメントは機能します。

于 2012-08-31T18:04:00.367 に答える
0

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:
于 2012-08-31T19:49:29.310 に答える