boj*_*ojo 27 python csv dictionary
我编写了将CSV读入python字典的代码,工作正常.我正在尝试将字典恢复为CSV格式.我写了以下内容:
import csv
itemDict={}
listReader = csv.reader(open('/Users/broberts/Desktop/Sum_CSP1.csv','rU'), delimiter = ',', quotechar='|')
for row in listReader:
fID = row[0]
fClassRange = row[1]
fArea = row[2]
if itemDict.has_key(fID):
itemDict[fID][fClassRange]=fArea
else:
itemDict[fID] = {'5.0 to 5.25':'','5.25 to 5.5':'','5.5 to 5.75':'','5.75 to 6.0':'','6.0 to 6.25':'','6.25 to 6.5':'','6.5 to 6.75':'','6.75 to 7.0':'','7.0 to 7.25':'','7.25 to 7.5':'','7.5 to 7.75':'','7.75 to 8.0':'','8.0 to 8.25':'',}
itemDict[fID][fClassRange]=fArea
listWriter = csv.writer(open('/Users/broberts/Desktop/Sum_CSP1_output.csv', 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for a in itemDict:
print a
listWriter.writerow(a)
Run Code Online (Sandbox Code Playgroud)
在最后一个块中,listWriter不会向CSV写入任何内容,尽管它会打印出来.我相信这与字典无序有关.我真的需要写出fID和每个fID相关的每个键(fClassRange ex."5.0到5.25"),然后写出与每个fClassRange相关联的值fArea到CSV,但我还没有得到那么多我的代码,因为我无法弄清楚如何写出甚至fID.
我查看了使用DictWriter,但我无法弄清楚如何告诉它所需的字段名是什么.
Spe*_*bun 20
默认编写者需要一个列表,这就是为什么它不适合你.要使用dictwriter,只需将您的listwriter =行更改为:
with open('/Users/broberts/Desktop/Sum_CSP1_output.csv', 'wb') as outfile:
listWriter = csv.DictWriter(
outfile,
fieldnames=itemDict[itemDict.keys()[0]].keys(),
delimiter=',',
quotechar='|',
quoting=csv.QUOTE_MINIMAL
)
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道字段应该是什么,您可以设置fieldnames为fieldnames=['arbitrary','list','of','keys'].
Jef*_*eff 13
样本数据:
mydict = [{"col1": 1000, "col2": 2000}, {"col1": 3000, "col2": 4000}]
Run Code Online (Sandbox Code Playgroud)
使用pandas将单词列表转换为CSV的单行程序:
import pandas as pd
pd.DataFrame(mydict).to_csv('out.csv', index=False)
Run Code Online (Sandbox Code Playgroud)
结果:
col1,col2
1000,2000
3000,4000
Run Code Online (Sandbox Code Playgroud)
一个writerows的例子:
import csv
def main():
results = [
{'File': 'test.txt', 'Temperature': 32.33, 'Day': 'Monday'},
{'File': 'test2.txt', 'Temperature': 44.33, 'Day': 'Tuesday'},
{'File': 'test3.txt', 'Temperature': 44.23, 'Day': 'Sunday'}
]
with open('results.csv', 'w') as f:
w = csv.DictWriter(f, results[0].keys())
w.writeheader()
w.writerows(results)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这将导致results.csv:
File,Temperature,Day
test.txt,32.33,Monday
test2.txt,44.33,Tuesday
test3.txt,44.23,Sunday
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33520 次 |
| 最近记录: |