Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python将字典写入csv的最有效方法是什么?_Python_Csv_Python 3.x_Dictionary_File Io - Fatal编程技术网

用Python将字典写入csv的最有效方法是什么?

用Python将字典写入csv的最有效方法是什么?,python,csv,python-3.x,dictionary,file-io,Python,Csv,Python 3.x,Dictionary,File Io,我正在编写代码,通过从网站上抓取html表来生成csv文件。该函数将查看表的每一行,并将数据列存储在字典中,如下所示 def write_data(): table_date = get_data() # call function to get data from html table into a dict // write table_date to csv def get_data(): data = {} for row in tr:

我正在编写代码,通过从网站上抓取html表来生成csv文件。该函数将查看表的每一行,并将数据列存储在字典中,如下所示

 def write_data():
    table_date = get_data()   # call function to get data from html table into a dict
    // write table_date to csv

 def get_data():
   data = {}
   for row in tr:
      data['name'] = 'John'
      data['id'] = 12
      return data
这是一个简化版本,但本质上我需要一种方法来获取每个表行的dictionary对象
数据
,并将其写入csv,其中键将是标题行。做这件事的有效方法是什么?

使用;只需为每行发送字典:

writer = csv.DictWriter(open_writable_file, fieldnames=['id', 'name'])
writer.writeheader()  # write a row the fieldnames
对于您制作的每一本词典:

writer.writerow(table_data)
请确保使用
newline=''
选项打开可写文件,以让
csv
模块控制行尾:

with open(filename, 'w', newline='') as open_writable_file):

由于某种原因,
csv.DictWriter
文档示例中省略了此建议;但对象是的一个子类,这里的建议同样适用。

谢谢@martinj这有帮助。尽管我有几个问题?1.有没有一种方法可以从字典键本身获取文件名,而不必显式地编写它?2.此外,return语句将只返回第一行并停止,但我需要将get_data()中的每一行返回给write_data()函数。有没有办法做到这一点?您可以显式地编写它们来定义它们的顺序。字典没有明确的顺序。您可以只使用第一个字典中的
table_data.keys()
,但随后会得到不一致的顺序(这取决于Python使用的随机种子以避免哈希冲突攻击);您可以使用生成器函数从函数中生成更多的数据行,或者只返回数据行列表,或者让函数直接写入CSV文件。