我正在尝试完成一个课程作业,因此当我这样做时需要将一个充满关键词的文本文件放入数组中我得到一个类型错误消息说:
TypeError:' in'需要字符串作为左操作数,而不是列表
这是什么意思?
这是我的代码:
#!/usr/bin/python
array = []
with open("test.txt", "r") as f:
for line in f:
array.append(line)
print array
searchfile =open('test.txt','r')
for line in searchfile:
if array in line: print line
searchfile.close()
编辑:感谢您的回复我已更改该行以显示此内容:
searchfile =open('test.txt','r')
for line in searchfile:
if line in array: print line
searchfile.close()
搜索工作除了我有一个关键字文档,其中包含简单的单词,如绿色,蓝色等' (所有都在他们自己的行上)然后我有一个文字,如文字,如我的衬衫是绿色的'当我使用这个代码时,它找不到任何东西,但如果我将句子改为一个单词就会找到它。我需要它来搜索文档中的关键字,然后显示它所在的整行。
答案 0 :(得分:3)
这意味着您正在尝试使用以下行检查列表是否在字符串中:
if array in line:
我猜您是在尝试检查该行是否在array
,因此必须撤消您的in
声明:
if line in array:
因此,您不会对此类错误感到困惑,请注意in
是operator。 左操作数是运算符左侧的任何对象,它是in
操作的一部分。从那里开始,如果你看一下错误表示的类型就很清楚了。
答案 1 :(得分:-1)
#!/usr/bin/python
array = []
with open("test.txt", "r") as f:
for line in f:
array.append(line)
print array
searchfile =open('test.txt','r')
for line in searchfile:
if line in array: print line
searchfile.close()
现在应该工作。
if line in array:
更改的行现在是在array
中搜索line
,而不是检查数组是否在行中(它不是)。
修改强> 忘了这一点...... 该错误是因为您正在搜索字符串以查找列表,这将导致错误,因为列表不能包含在字符串中。将操作应用于错误类型时会引发TypeError's。这个错误是python告诉你你不能在字符串中搜索列表。
编辑2
在重新编辑你的编辑时,你需要用空格" "
分割文件的行,然后迭代它。
array = []
with open("words.txt", "r") as f:
for line in f:
array.append(line)
print array
searchfile =open('sent.txt','r')
for line in searchfile:
sLine = line.split(" ")
for word in sLine:
if word in array:
print line
searchfile.close()
现在遍历文件中的每一行,然后将该行拆分并保存为新列表 - sLine
。然后,针对array
检查此列表中的每个项目。
但是,如果您要搜索的字词不在该行的末尾,则会出现此错误,因为array
中的每个项目都包含\n
,但searchfile
中的某些可能不会。
array = []
with open("words.txt", "r") as f:
for line in f:
line = line.rstrip("\n")
array.append(line)
print array
searchfile =open('sent.txt','r')
for line in searchfile:
sLine = line.split(" ")
for word in sLine:
word = word.rstrip("\n")
if word in array:
print line,
searchfile.close()
即使将其嵌入句子中,现在也可以找到该词。
e.g。
array - cat
搜索文件 - 猫坐在垫子上
即使在句子中,也会找到猫。打印结束时的逗号应该停止在您打印的每一行之间有一条线。