我是Python的新手,我试图采用大约30个csv文件,所有文件都具有相同的头,但每个文件中的数据不同,并合并为一个。现在我假装我只有两个文件要接收,一个是关于ID号1,2,3的信息,另一个是关于ID号4,5和6的信息到目前为止,我已经设法采用文件并使用dictreader创建了一堆字典,具有相同的键,但我不知道如何采取对应于每个键的值,并将它们与所有数据一起连接到一个大文件中。
这是我到目前为止的进度:)
for filename in os.listdir(os.getcwd()):
root, ext = os.path.splitext(filename)
if root.startswith('file1') and ext == '.csv':
upload1 = filename
if root.startswith('file2') and ext == '.csv':
upload2 = filename
file_upload1 = open(upload1, 'rU')
data_upload1 = csv.DictReader(file_upload1)
for row in data_upload1:
print row
upload2也是如此。然后我得到这样的输出;
{'ID': '1', 'name': 'bert', 'age': '30'}
{'ID': '2', 'name': 'ernie', 'age': '40'}
{'ID': '3', 'name': 'pinky', 'age': '50'}
{'ID': '4', 'name': 'perky', 'age': '60'}
etc
我想做的是一个csv文件,其中一列是id 1 2 3 4 5 6然后一列是对应的名字和年龄等等
谁能建议我怎么才能做到这一点?不好意思,我是新手。
调用csv.DictReader()时将得到一个字典生成器。假设我们有两个文件:"f1.csv"one_answers"f2.csv",每个文件都包含多条记录。
import csv
fp1, fp2 = open("f1.csv"), open("f2.csv")
ld1, ld2 = csv.DictReader(fp1), csv.DictReader(fp2) #ld1 and ld2 are *generators*
res = [] #our result will be stored here(LIST of dicts)
ds = [ld1, ld2] #list of generators
然后,遍历ds,同时将每个字典中的每个k-v对添加到res字典中,如下所示:
for d in ds: #each d is a generator
for e in d: #each e is a dict
res.append(e)
现在是一个包含两个源字典的列表。只需遍历它并写下它们。
请注意,您可以使代码更健壮/高效,但首先要理解方法:)
问候,
Yati Sagade