[英]python not iterating by line with readlines()
我有一个文本文件,每行只有一个字符串。 我想让python查看一行,然后检查该字符串是否在列表中,以及是否未添加它,否则请跳至下一行。 稍后,我将使用集合来计数每个列表项的总出现次数。
testset = ['2']
# '2' is just a "sanity check" value that lets me know I am extending list
file = open('icecream.txt')
filelines = file.readlines()
for i in filelines:
if i not in testset:
testset.extend(i)
else:
print(i, "is already in set")
print(testset)
我期待得到:
testset = ['2', 'chocolate', 'vanilla', 'AmericaConeDream', 'cherrygarcia', ...]
相反,我得到了:
testset = ['2', 'c', 'h', 'o', 'c', 'o' ....]
不知道这里发生了什么。 我尝试使用以下命令运行此命令:对于文件中的i:
正如我相信的那样,我在另一篇文章中读到open()本身就是一个迭代器。 有人可以启发我如何使此迭代生效吗?
extend()
遍历其参数的元素(在本例中为字符),并将每个元素分别添加到列表中。 使用append()
代替:
testset.append(i)
如果您不关心各行在testset
出现的testset
,则可以使用集合而不是列表。 以下单行代码将创建一个包含文件中每个唯一行的集合:
testset = set(open('icecream.txt'))
您可以将extend
视为append
的附加值,而不只是一个值。 因为无论如何您打算使用计数器来对文件进行计数,所以我将执行以下操作以键入唯一值:
with open('text.txt') as text:
data = Counter(i for i in text) # try data.keys()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.