如何在python中从csv文件检索特定条目
我有一个CSV文件如何在python中从csv文件检索特定条目,python,csv,Python,Csv,我有一个CSV文件rsvp1.CSV: _id event_id comments 1 | x | hello.. 2 | y | bye 3 | y | hey 4 | z | hi 我的问题是: 对于每个事件e,如何将注释写入单独的文本文件 以下代码有一些错误: impor
rsvp1.CSV
:
_id event_id comments
1 | x | hello..
2 | y | bye
3 | y | hey
4 | z | hi
我的问题是:对于每个事件e,如何将注释写入单独的文本文件 以下代码有一些错误:
import csv
with open('rsvps1.csv','rU') as f:
reader = csv.DictReader(f, delimiter=',')
rows = list(reader)
fi = open('rsvp.txt','wb')
k=0
for row in rows:
if k == row['event_id']:
fi.write(row['comment']+"\n")
else:
fi.write(row['event_id']+"\t")
fi.write(row['comment']+"\n")
k= row['event_id']
f.close()
fi.close()
我建议您使用
pandas
作为导入工具。它为csv文件创建清晰的数据结构,类似于MS Excel中的电子表格。然后,您可以使用循环查看事件id并处理您的评论
import pandas as pd
data = pd.read_csv('rsvps1.csv', sep = ',')
for index, row in data.iterrows():
print(row['event_id'], row['comment') #Python 3.x
但是,我不确定您要在文件中写入什么。只是所有事件id的注释?完整的“注释”列可以通过以下方式导出到单独的文件中:
data.to_csv('output.csv', columns = ['comment'])
根据评论提供的其他信息: 如果只想保存具有相同事件id的某些注释,则必须首先选择相应的行。这是由
selected_data = data[data['event_id'] == 'x']
对于事件_id'x'
selected_data
现在包含一个数据框,该数据框只保存在“event_id”列中有“x”的行。然后,您可以如上所示循环使用此数据帧。我认为最好不要使用csv文件,而是将其视为一个普通文件,您可以在其中访问以下内容
with open('file.csv', 'r') as f:
lines = f.readlines()
for line in lines:
if not line.startswith('_id'):
line_values = line.split(',')
with open('%s.txt' % line_values[1], 'a') as fp:
fp.write(line_values[2] + '\n')
拆分csv文件
给定包含以下内容的文件rsvps1.csv
:
_id,event_id,comments
1,x,hello
2,y,bye
3,y,hey
4,z,hi
bye
hey
这:
将其拆分为三个文件:
event_x.txt
_id,event_id,comments
1,x,hello
_id,event_id,comments
4,z,hi
event_y.txt
_id,event_id,comments
2,y,bye
3,y,hey
和event_z.txt
_id,event_id,comments
1,x,hello
_id,event_id,comments
4,z,hi
根据您的需要调整输出
只有评论
如果您不希望csv作为输出,这将变得更简单:
import csv
import itertools as it
from operator import itemgetter
with open('rsvps1.csv') as fin:
rows = list(csv.DictReader(fin))
for event_id, event in it.groupby(rows, key=itemgetter('event_id')):
with open('event_{}_comments.txt'.format(event_id), 'w') as fout:
for item in event:
fout.write('{}\n'.format(item['comments']))
现在event_y_comments.txt
包含以下内容:
_id,event_id,comments
1,x,hello
2,y,bye
3,y,hey
4,z,hi
bye
hey
我立即注意到的一件事是,您有
分隔符=”,“
当文件似乎使用了
的分隔符时出现了一些错误
是一个相当模糊的错误描述。不,它是一个csv文件,所以它由,我只是用|来演示数据的表示方式。我可以将事件id和注释保存到文本文件中。但最后我想制作几个小文本文件,它们的名称为event_id,文本文件应该包含与该event_id对应的所有注释。对于所有event_id,我想将注释导出到名为event_id的文件中。