Python 类型错误:';在<;字符串>';需要字符串作为左操作数,而不是列表错误

Python 类型错误:';在<;字符串>';需要字符串作为左操作数,而不是列表错误,python,string,Python,String,代码 text = ["300000", "300001", "500000", "500001"] cnt = 0 for line in f: if text in line: print(line.strip()) cnt += 1 if cnt: print(cnt, "count") else: print(text, "No data.") 错误: Traceback (most recent call last): Fi

代码

text = ["300000", "300001", "500000", "500001"]
cnt = 0
for line in f:
    if text in line:
        print(line.strip())
        cnt += 1
if cnt:
    print(cnt, "count")
else:
    print(text, "No data.")
错误:

Traceback (most recent call last):
  File "C:/Users/users/PycharmProjects/Mining/Test Folder/Test2.py", line 10, in <module>
    if text in line:
TypeError: 'in <string>' requires string as left operand, not list
回溯(最近一次呼叫最后一次):
文件“C:/Users/Users/PycharmProjects/Mining/Test Folder/Test2.py”,第10行,在
如果行中有文本:
TypeError:“in”需要字符串作为左操作数,而不是列表

为什么会发生此错误?

您需要了解“in”在python中是如何工作的
示例:
>[“pqr”、“xyz”、“abc”]中的“abc”

True

在这里,我正在测试字符串“abc”是否存在于“in”右侧提到的列表中,即[“pqr”、“xyz”、“abc”]

但您正在检查另一个列表(代码中的行)中是否存在列表(代码中的文本)。
因此,正如错误所说,“in要求字符串作为左操作数”,但您提供了一个列表。

in关键字用于检查某个值是否在集合中

如果要知道列表中是否有
,请切换操作数:

text = ["300000", "300001", "500000", "500001"]
cnt = 0
for line in f:
    if line in text: 
        print(line.strip())
如果您想知道列表
文本
中的任何字符串是否在
行的子字符串内,请执行以下操作:

text = ["300000", "300001", "500000", "500001"]
cnt = 0
for line in f:
    if any([i in line for i in text]): 
        print(line.strip())

这里的
f
是什么?因为
line
是一个字符串对象,
text
是一个列表对象,所以您要检查字符串是否包含list。f没有任何意义……您想对上述代码做什么?您试图实现的逻辑是什么?文本文件中有大量数据。加载数据时,如果我写的四个数据中的任何一个匹配,它会显示所有匹配的句子。这不是答案。请使用注释来澄清问题。Hello@PrashantKumar,问题是
为什么会发生此错误?
我回答了这个问题,解释了为什么会发生此错误。你能告诉我为什么这不是很好的回答吗。如果您能将问题标记为已解决,将不胜感激@이현규