我是Python的新手,我试图获取大约30个csv文件,所有文件都有相同的标题,但每个文件中的数据不同并合并为一个。 现在我假装我只有两个文件可以接收,一个有ID号1,2和3的信息,另一个有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,然后是每个对应名称的列,以及每个相应的年龄等。
有人可以建议我如何实现这一目标吗? 对不起新手问题。
答案 0 :(得分:0)
当你调用csv.DictReader()时,你会得到一个dicts生成器。假设我们有两个文件:“f1.csv”和“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)
此res是一个列表,其中包含来自两个来源的dicts。只需迭代它并编写它们。
请注意,您可以使代码更加健壮/高效,但首先只需了解方法:)
的问候,
Yati Sagade