我正在阅读单词列表(dict)并试图找出列表中是否有特定单词。这是代码:
dict = []
with open('words.txt', newline='') as inputfile:
for row in csv.reader(inputfile):
dict.append(row)
print('hello' in dict)
我知道hello在列表dict中,但最后一行代码返回False。
如果我输入以下代码,它会给出True,所以它必须与它的读取方式有关:
dict=['hel','hello','heo','sds','sdswe']
print('hello' in dict)
任何想法??
答案 0 :(得分:0)
原因在于您要附加 .txt
文件中的列表而不是字符串,最后列出的是列表而不是您想要的列表字符串强>
csv.reader所做的是它以列表的形式读取 .txt
文件的内容。
因此,例如,如果.txt文件有
Your
Name
csv.reader会像这样解释:
[['Your'], ['Name']]
因此是列表而不是字符串列表。
所以,如果你想要一个字符串列表,你可以这样做:
yourlist.append(row[0].strip()) #striping will remove the newline
这将为您提供行的元素,而不是列表本身。如果这有助于你,请告诉我。
最后,这就是你可以拥有的:
yourlist = []
with open('words.txt', newline='') as inputfile:
for row in csv.reader(inputfile):
yourlist.append(row[0].strip())
print('hello' in yourlist)
答案 1 :(得分:0)
您的代码存在两个主要问题:
lst
代表列表而不是dict
。row
返回一个列表,而您只需要每个row
实例中的第一个条目;即使用row[0]
。以下代码演示了第二个问题。如果有疑问,请使用print(type(row))
查看您正在使用的对象类型。
import csv
from io import StringIO
csvstr = StringIO("""hel
hello
heo
sds
sdswe
""")
lst = []
for row in csv.reader(csvstr):
print(type(row)) # <class 'list'>
lst.append(row[0])
print('hello' in lst) # True