将列表的确切列保存在 Python 中的 csv 中
Saving the exact columns of list in csv in Python
有这样的列表 "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
你快到了:
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=""
open(..)
文件很重要,这样您就不会在其中添加额外的换行符 - csv
将自行处理这些 - 您还应该指定 encoding
- 只是为了确定。
我在途中修复了您的示例数据中的其他一些缩进和小括号错误,并提供了所需的导入以获得工作示例。
有这样的列表 "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
你快到了:
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=""
open(..)
文件很重要,这样您就不会在其中添加额外的换行符 - csv
将自行处理这些 - 您还应该指定 encoding
- 只是为了确定。
我在途中修复了您的示例数据中的其他一些缩进和小括号错误,并提供了所需的导入以获得工作示例。