我有一个文本文件,其中包含公交公司预订系统的客户信息。文件的布局如下:
id, name, customer discount, total money spent
。文件的一部分是:
C1, James, 0, 100
C2, Lily, 0, 30
我想在Python中将这些信息导入到一个列表中,但我只需要id和名称。我尝试了几种不同的方法来导入信息,但我只能将整个文件导入到一个列表中,即使这样,它也总是像这样输出:
[['C1,' 'James,' '0', '100'], ['C2', 'Lily', '0', '30']]
我甚至不知道如何开始分离项目,以便我可以在列表中只有id和name。
由于文本文件包含逗号分隔的值,因此csv模块可能最有用。
import csv
with open ('data.txt', 'r') as fh:
header = [h.strip() for h in next(fh).split(',')] # remove spaces and assign the header to dictionary keys
reader = csv.DictReader(fh, fieldnames=header) # read the row contents assigning names to the fields
for row in reader:
print(row['id'], row['name'])
C1 James
C2 Lily
csv模块作为字典读取文件的有用部分为每行的字段分配列名,使您可以轻松地索引您想要选择的列名,例如row['id']
和row['name']
。
也,因为你提到你想"只有list"id和名称;,首先创建一个空列表,然后将每个行项目列表,所以:
import csv
id_name = [] # list to store ids, names
with open ('data.txt', 'r') as fh:
header = [h.strip() for h in next(fh).split(',')]
reader = csv.DictReader(fh, fieldnames=header)
for row in reader:
# print(row['id'], row['name'])
id_name.append([row['id'], row['name']])
print(id_name) # print the resulting list
[['C1', ' James'], ['C2', ' Lily']]