将文档逐行附加到列表
Appending a document line by line to a list
我正在尝试将文本文档 "Payments" 中的每个单词放入一个列表中。对于 "Payments" 的每一行,我希望它在 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()
来从逗号中删除单个单词并删除每行末尾不可见的下一行 space。这是我到目前为止编写的代码:
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
列表中,并且该行是一个完整的字符串,而不是单独的字符串,由一个逗号。
我确实尝试在 for line in myFile:
的末尾添加 .split(',')
,但它显示了一条错误消息:
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'
您需要在每个 line
:
上调用 .split()
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)
您可以做任何您要求的事情 - 从打开的文件中获取行列表,剥离每一行,然后按 ,
拆分 - 所有这些都在一行中:
myList = map(lambda line: line.strip().split(","), myFile.readlines())
你的方法的问题是你没有在阅读后拆分行。
作为一种更 pythonic 的方式,您最好使用 csv
模块打开文件,该模块使用指定的分隔符拆分行,并且 returns 可迭代的拆分行。
import csv
with open("Payments.txt") as myFile:
spam_reader = csv.reader(myFile, delimiter=',')
print (list(spam_reader))
您使用了 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)
试试这个:
myList = []
for line in myFile:
myList.append(line.strip().split(sep=','))
myFile.close()
print(myList)
需要在每个line.strip()
中调用.split()
函数,如下:
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']]
试试这个:
from pprint import pprint
with open("Payments.txt") as myFile:
myList = []
for line in myFile:
columns = line.strip().split(', ')
myList.append(columns)
pprint(myList)
请注意 上下文管理器 的使用,它会在您完成后自动关闭您的文件,而 pretty print 库将每个不同行上的列表项。它使它更容易阅读。
我正在尝试将文本文档 "Payments" 中的每个单词放入一个列表中。对于 "Payments" 的每一行,我希望它在 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()
来从逗号中删除单个单词并删除每行末尾不可见的下一行 space。这是我到目前为止编写的代码:
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
列表中,并且该行是一个完整的字符串,而不是单独的字符串,由一个逗号。
我确实尝试在 for line in myFile:
的末尾添加 .split(',')
,但它显示了一条错误消息:
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'
您需要在每个 line
:
.split()
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)
您可以做任何您要求的事情 - 从打开的文件中获取行列表,剥离每一行,然后按 ,
拆分 - 所有这些都在一行中:
myList = map(lambda line: line.strip().split(","), myFile.readlines())
你的方法的问题是你没有在阅读后拆分行。
作为一种更 pythonic 的方式,您最好使用 csv
模块打开文件,该模块使用指定的分隔符拆分行,并且 returns 可迭代的拆分行。
import csv
with open("Payments.txt") as myFile:
spam_reader = csv.reader(myFile, delimiter=',')
print (list(spam_reader))
您使用了 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)
试试这个:
myList = []
for line in myFile:
myList.append(line.strip().split(sep=','))
myFile.close()
print(myList)
需要在每个line.strip()
中调用.split()
函数,如下:
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']]
试试这个:
from pprint import pprint
with open("Payments.txt") as myFile:
myList = []
for line in myFile:
columns = line.strip().split(', ')
myList.append(columns)
pprint(myList)
请注意 上下文管理器 的使用,它会在您完成后自动关闭您的文件,而 pretty print 库将每个不同行上的列表项。它使它更容易阅读。