我试图将文本文档“付款”中的每个单词都放到一个列表中。对于每行“付款”,我希望它在myList
的列表中,所以它看起来像这样:
myList = [['E1234','12/09/14','440','A','0']['E3431','10/01/12','320','N','120']['E0987','04/12/16','342','A','137']]
我需要使用.split()
和.strip()
来删除逗号中的单个单词,并删除每行末尾不可见的下一行空格。这是我到目前为止编写的代码:
myFile = open("Payments.txt")
myList = []
for line in myFile:
print(line.strip())
myList.append(line.strip())
myFile.close()
print(myList)
该程序确实有效,但不是我打算工作的方式。该程序返回以下内容:
E1234,12/09/14,440,A,0
E3431,10/01/12,320,N,120
E0987,04/12/16,342,A,137
E5322,05/04/02,503,A,320
E9422,26/11/16,124,N,0
E7382,31/03/11,414,A,235
['E1234,12/09/14,440,A,0', 'E3431,10/01/12,320,N,120', 'E0987,04/12/16,342,A,137', 'E5322,05/04/02,503,A,320', 'E9422,26/11/16,124,N,0', 'E7382,31/03/11,414,A,235']
它已将文档附加到myList
,但它没有将每一行放入myList
中的'自己的列表中,并且该行是整个字符串,而不是单个字符串,用逗号分隔
我确实尝试在.split(',')
的末尾添加for line in myFile:
,但它显示错误消息:
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'
答案 0 :(得分:2)
您需要在每个.split()
上致电line
:
myList = []
for line in myFile:
print(line.strip())
myList.append(line.strip().split(","))
或者,在一行中使用list comprehension:
myList = [line.strip().split(",") for line in myFile]
或者,您也可以使用csv
module:
import csv
with open("Payments.txt") as f:
reader = csv.reader(f)
myList = list(reader)
print(myList)
答案 1 :(得分:1)
你可以做你要求的一切 - 从一个打开的文件中获取一行代码,剥离每一行,然后按Timer.getNow()
分割 - 所有这一切都在一行中:
,
答案 2 :(得分:0)
您的方法存在的问题是您在阅读后没有拆分行。
作为一种更加pythonic的方式,最好使用csv
模块打开文件,该模块使用指定的分隔符拆分行,并返回可迭代的分割行。
import csv
with open("Payments.txt") as myFile:
spam_reader = csv.reader(myFile, delimiter=',')
print (list(spam_reader))
答案 3 :(得分:0)
试试这个:
myList = []
for line in myFile:
myList.append(line.strip().split(sep=','))
myFile.close()
print(myList)
答案 4 :(得分:0)
您需要在每个.split()
中调用line.strip()
函数,如下所示:
myFile = open("Payments.txt")
myList = []
for line in myFile:
print(line.strip())
myList.append(line.strip().split(","))
myFile.close()
print(myList)
结果将是您要求的结果:
>>>[['E1234','12/09/14','440','A','0']['E3431','10/01/12','320','N','120']['E0987','04/12/16','342','A','137']]
答案 5 :(得分:0)
试试这个:
from pprint import pprint
with open("Payments.txt") as myFile:
myList = []
for line in myFile:
columns = line.strip().split(', ')
myList.append(columns)
pprint(myList)
请注意使用上下文管理器会在您完成后自动关闭文件,而漂亮的打印库会将列表中的每个项目放在不同的行上。它使阅读更容易。
答案 6 :(得分:-1)
您使用strip()
代替split()
。以下是您修改后的原始代码:
myFile = open("Payments.txt")
myList = []
for line in myFile:
print(line.strip())
myList.append(line.split()) // We use split here
myFile.close()
print(myList)