在Python中以csv格式保存列表的精确列
列表“d”如下所示:在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行(因此使用列名称、电子
[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
?