can*_*cse 5 python csv dictionary
我正在尝试编写一种将字典列表传递到 csv 文件的方法。
我有以下清单:
List = [{'a': 10, 'e': 14, 'b': 11, 'd': 13, 'c': 12}, {'a': 20, 'e': 24, 'b':
21, 'd': 23, 'c': 22}, {'a': 30, 'e': 34, 'b': 31, 'd': 33, 'c': 32}, {'a':
40, 'e': 44, 'b': 41, 'd': 43, 'c': 42}]
Run Code Online (Sandbox Code Playgroud)
以及以下代码:
def ListDic_to_CSV(filename, table, fieldnames, separator, quote):
with open(filename, "w", newline="") as csvfile:
csvwrite=csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter =separator, quotechar = quote)
csvwrite.writeheader()
for row in table:
csvwrite.writerow(row)
Run Code Online (Sandbox Code Playgroud)
我试图得到:
"a","b","c","d","e"
10,11,12,13,14
20,21,22,23,24
30,31,32,33,34
40,41,42,43,44
Run Code Online (Sandbox Code Playgroud)
但我得到:
a,b,c,d,e
10,11,12,13,14
20,21,22,23,24
30,31,32,33,34
40,41,42,43,44
Run Code Online (Sandbox Code Playgroud)
如何更改我的代码,以便字段名称周围有“”?
quotation marks "您可以通过将作者的引用csv.QUOTE_ALL属性设置为并将quotechar设置为 来强制始终拥有"。然而,正如Daniel Roseman已经提到的,此属性存在的原因是引用包含分隔符的字段,例如,或或您选择的任何一个。
这是一个设置quotechar和的小例子quoting:
import csv
with open('names.csv', 'w') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL, quotechar='"')
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
Run Code Online (Sandbox Code Playgroud)
输出名称.csv:
"first_name","last_name"
"Baked","Beans"
Run Code Online (Sandbox Code Playgroud)
仅标题:
如果您有兴趣只用headersakafieldnames来编写,quotes您可以不用只是使用writer.writeheader()dowriter.writerow()并编写您自己的标头。基本上,writeheader无非是一个writerow用字典调用的方便函数。
import csv
with open('names3.csv', 'w') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_NONE, quotechar=None)
quotedFieldnames = [(name,'\"{0}\"'.format(name) ) for name in fieldnames]
customHeader = dict(quotedFieldnames)
writer.writerow(customHeader)
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
Run Code Online (Sandbox Code Playgroud)