我正在读取一个文本文件,用逗号分隔单词和数字,然后将它们添加到单独的列表中,但是第一个名称被省略。这是我的代码。
for line in keywordFile:
line = keywordFile.readline()
keyword.append(line[0])
keywordValue.append(line[1])
答案 0 :(得分:3)
您正在使用第一个readline()
,并使用line
语句中定义的for
。
答案 1 :(得分:2)
似乎你keywordFile
是一个文件对象,因为文件对象是迭代器(一次迭代),在你循环它的第一行之后就消耗了第一行。
for line in keywordFile:
^
然后你使用readline
来阅读下一行,这是额外的,所以为了解决这个问题,你需要删除这部分。
另外,作为一种更加pythonic的方式,您可以使用列表推导来通过用逗号分隔行来创建单词列表。如果要创建所有单词的列表,可以使用嵌套循环:
with open ('filename') as keywordFile :
words = [w for line in keywordFile for w in line.split(',')]
但是如果你想把每一行的分隔词放在一个单独的列表中,你只需要使用一个循环:
with open ('filename') as keywordFile :
words = [line.split(',') for line in keywordFile]
或者作为更好的选择使用csv
模块将文件作为单独的单词打开。您可以将分隔符参数传递给csv.reader
函数:
import csv
with open('file_name') as f:
words=csv.reader(f,delimiter=',')
这里words
是来自分离单词元组的迭代器。而且你想要连接它们,你可以起诉itertools.chain.from_iterable()
函数。
答案 2 :(得分:1)
尝试类似:
for line in keywordFile:
tokens = line.split(',')
keyword.append(tokens[0])
keywordValue.append(tokens[1])