Python Array,试图将文本文件放入数组中
Posted
技术标签:
【中文标题】Python Array,试图将文本文件放入数组中【英文标题】:Python Array, trying to place text file into an array 【发布时间】:2015-06-30 10:48:19 【问题描述】:我正在尝试完成一项课程作业,因此需要将一个充满关键词的文本文件放入一个数组中,当我这样做时,我收到一条类型错误消息:
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()
搜索有效,除了我有一个关键字文档包含简单的词,如“绿色、蓝色等”(都在自己的行上),然后当我使用此代码时,我有一个包含文本的文档,例如“我的衬衫是绿色的”不会找到任何东西,但如果我将句子更改为一个单词,它会找到它。我需要它在文档中搜索关键字,然后显示它所在的整行。
【问题讨论】:
【参考方案1】:这意味着您正在尝试检查列表是否在字符串中,使用以下行:
if array in line:
我的猜测是您正在尝试检查该行是否在 array
中,因此您的 in
语句必须颠倒:
if line in array:
为了让您以后不会被此类错误弄糊涂,请注意in
是operator。 left 操作数 是运算符左侧的任何对象,它是in
操作的一部分。从那里开始,如果您查看错误所指示的类型,就很清楚了。
【讨论】:
嗨,谢谢您的回复,我已将行更改为显示:searchfile =open('test.txt','r') for line in searchfile: if line in array: print line searchfile。关闭()搜索工作,除了我有一个关键字文档包含简单的单词,如“绿色,蓝色等”(都在他们自己的行上)然后当我使用此代码时,我有一个带有文本的文档,例如“我的衬衫是绿色的”不会找到任何东西,但如果我将句子更改为一个单词,它会找到它。我需要它在文档中搜索关键字,然后显示它所在的整行。 祝你好运!查看空格上的分割线,以便您可以遍历每个单词,或使用正则表达式模块。【参考方案2】:#!/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
,但@987654332 中的一些项目@ 可能不会。
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()
现在即使单词嵌入在句子中,它也会找到它。
例如
数组 - 猫
searchfile - 猫坐在垫子上
现在可以找到猫,即使它在句子中。
打印结束时的逗号应该不会在您打印出来的每一行之间出现一行。
【讨论】:
为什么要添加几乎相同的答案? 嗨,谢谢您的回复,我已将行更改为显示:searchfile =open('test.txt','r') for line in searchfile: if line in array: print line searchfile。关闭()搜索工作,除了我有一个关键字文档包含简单的单词,如“绿色,蓝色等”(都在他们自己的行上)然后当我使用此代码时,我有一个带有文本的文档,例如“我的衬衫是绿色的”不会找到任何东西,但如果我将句子更改为一个单词,它会找到它。我需要它在文档中搜索关键字,然后显示它所在的整行。以上是关于Python Array,试图将文本文件放入数组中的主要内容,如果未能解决你的问题,请参考以下文章