CSV to dictionary
我需要一些协助:
编写一个函数,打开文件
为了方便起见,您应该将字符串
CSV实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #,HS,Name,Value (USD),Percent 1,8517,Telephones,"$2,823,450,843.60",15.38% 2,2710,Refined Petroleum,"$2,124,413,818.52",11.57% 3,8703,Cars,"$371,092,090.84",2.02% 4,7204,Scrap Iron,"$331,463,406.48",1.81% 5,8544,Insulated Wire,"$319,352,873.32",1.74% 6,4011,Rubber Tires,"$242,977,533.70",1.32% 7,8708,Vehicle Parts,"$241,059,109.78",1.31% 8,8429,Large Construction Vehicles,"$239,589,588.65",1.31% 9,4407,Sawn Wood,"$238,358,904.17",1.30% 10,4418,Wood Carpentry,"$237,521,163.59",1.29% 11,7210,Coated Flat-Rolled Iron,"$213,137,606.81",1.16% 12,9404,Mattresses,"$208,042,615.08",1.13% 13,4403,Rough Wood,"$206,112,209.11",1.12% 14,9403,Other Furniture,"$202,900,185.49",1.11% 15,8504,Electrical Transformers,"$202,856,149.28",1.10% |
我知道如何提取2。3。纵队,但我被困在这一点上。
1 2 3 4 5 6 | import csv f= open('EstonianExports2011.csv', 'rb') archive = csv.reader(f, delimiter=',') arch_dict = {} arch_dict = {row[2]: row[3]for row in archive} print arch_dict |
我很感谢你的帮助。
您的文件已经从高到低排序,所以您只需要在头后取前十行,还需要去掉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import csv with open('EstonianExports2011.csv', 'rb')as f: archive = list(csv.reader(f, delimiter=','))[1:11] # get lines 1 to 10 arch_dict = {row[2]: float(row[3].strip("$").replace(",","")) for row in archive} arch_dict {'Rubber Tires': 242977533.7, 'Cars': 371092090.84, 'Vehicle Parts': 241059109.78, 'Insulated Wire': 319352873.32, 'Scrap Iron': 331463406.48, 'Telephones': 2823450843.6, 'Sawn Wood': 238358904.17, 'Large Construction Vehicles': 239589588.65, 'Wood Carpentry': 237521163.59, 'Refined Petroleum': 2124413818.52} In [2]: s ="$213,137,606.81" In [3]: s.strip("$") # strips from the ends of a string Out[3]: '213,137,606.81' In [5]: s.strip("$").replace(",","") # combine with replace to remove the commas Out[5]: '213137606.81' |
使其成为一个函数应该是非常直接的。
由于这是一个分配,我不会(至少在最初)提供显式代码,而是提供一个算法建议: