Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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_List_Csv_Dictionary_Ordereddictionary - Fatal编程技术网

在Python中以csv格式保存列表的精确列

在Python中以csv格式保存列表的精确列,python,list,csv,dictionary,ordereddictionary,Python,List,Csv,Dictionary,Ordereddictionary,列表“d”如下所示: [OrderedDict([('id', '1'), ('name', 'Jack'), ('email', 'jack@email.com'), OrderedDict([('id', '2'), ('name', 'Ricky'), ('email', 'ricky@email.com')] 我想使用csv模块保存输出,但不使用id行(因此使用列名称、电子

列表“d”如下所示:

[OrderedDict([('id', '1'),
              ('name', 'Jack'),
              ('email', 'jack@email.com'),
 OrderedDict([('id', '2'),
              ('name', 'Ricky'),
              ('email', 'ricky@email.com')]
我想使用csv模块保存输出,但不使用id行(因此使用列名称、电子邮件及其值)。这样表演:

path='/..'
fields=['Name','Email']

with open(path, 'w') as f:   
writer = csv.writer(f)
writer.writerow(fields)
for item in new_d:
    writer.writerow([d[1], d[2]])

因此,它将整行保存为一个值。如何才能更深入地了解列表的值级别并将其正确保存在csv中?

另一种方法是使用
pandas

In [4]: data = [OrderedDict([('id', '1'),
   ...:               ('name', 'Jack'),
   ...:               ('email', 'jack@email.com')]),
   ...:         OrderedDict([('id', '2'),
   ...:               ('name', 'Ricky'),
   ...:               ('email', 'ricky@email.com')])]
In [5]: df = pd.DataFrame(data)
In [6]: df_ = df.drop('id', axis=1)
In [7]: df_.to_csv('data.csv', header=True, index=False)
In [8]: !head data.csv
name,email
Jack,jack@email.com
Ricky,ricky@email.com

另一种方法是使用
pandas

In [4]: data = [OrderedDict([('id', '1'),
   ...:               ('name', 'Jack'),
   ...:               ('email', 'jack@email.com')]),
   ...:         OrderedDict([('id', '2'),
   ...:               ('name', 'Ricky'),
   ...:               ('email', 'ricky@email.com')])]
In [5]: df = pd.DataFrame(data)
In [6]: df_ = df.drop('id', axis=1)
In [7]: df_.to_csv('data.csv', header=True, index=False)
In [8]: !head data.csv
name,email
Jack,jack@email.com
Ricky,ricky@email.com
你就快到了:

from collections import OrderedDict
import csv

listOfDicts = [OrderedDict([('id', '1'),
              ('name', 'Jack'),
              ('email', 'jack@email.com')]),
              OrderedDict([('id', '2'),
              ('name', 'Ricky'),
              ('email', 'ricky@email.com')])]
path='someFilename.csv'
fields=['Name','Email']

with open(path, 'w', newline="", encoding="utf8") as f:   
    writer = csv.writer(f)
    writer.writerow(fields)
    for d in listOfDicts:  # d are your different dictionaries 
        writer.writerow([d['name'], d['email']])
创建文件:

Name,Email
Jack,jack@email.com
Ricky,ricky@email.com
使用
newline=“
打开(…)文件非常重要,这样您就不会在文件中添加额外的换行符-
csv
将自行处理这些换行符-您还应该指定
编码
-以确保

我在途中修复了示例数据上的其他缩进和小括号错误,并提供了获得工作示例所需的导入

你就快到了:

from collections import OrderedDict
import csv

listOfDicts = [OrderedDict([('id', '1'),
              ('name', 'Jack'),
              ('email', 'jack@email.com')]),
              OrderedDict([('id', '2'),
              ('name', 'Ricky'),
              ('email', 'ricky@email.com')])]
path='someFilename.csv'
fields=['Name','Email']

with open(path, 'w', newline="", encoding="utf8") as f:   
    writer = csv.writer(f)
    writer.writerow(fields)
    for d in listOfDicts:  # d are your different dictionaries 
        writer.writerow([d['name'], d['email']])
创建文件:

Name,Email
Jack,jack@email.com
Ricky,ricky@email.com
使用
newline=“
打开(…)文件非常重要,这样您就不会在文件中添加额外的换行符-
csv
将自行处理这些换行符-您还应该指定
编码
-以确保

我在途中修复了示例数据上的其他缩进和小括号错误,并提供了获得工作示例所需的导入


改用
DictWriter
吗?改用
DictWriter