[英]How to parse a csv key value file using python
我有一个解析键值逗号分隔文件的要求。请查看附件示例日志文件格式。
event_1,log_time:2013-11-05T08:33:37:293+00,user_id:2535285332077170,profile_id:8,nickname:2535285332077170,rank_id:7,shop_tr_status:OK,
event_2,log_time:2013-11-05T08:33:37:344+00,rule_id:18372990742769963554,user_id:2535285332077170,profile_id:8,
event_3,log_time:2013-11-05T08:33:37:401+00,user_id:2535285332077170,profile_id:8,nickname:2535285332077170
我的要求是,如果它是事件1,那么我需要log_time和昵称
如果是event_2,那么我需要userid和profileid
如果它是event_3,那么我需要用户名和昵称
谁能建议进行此操作的最佳方法是什么
忘记csv.reader。 您应该将tablib与动态列一起使用:
ds = tablib.Dataset()
ds.csv = open(csvfile).read()
然后,您可以使用以下方法添加列:
def event_data(row):
if row[0] == 'event_1':
return [row[1], row[4]]
# .. and so forth
ds.append_col(event_data, header='Event data')
根据第一列,获取该列将为您提供所需的数据。
如果您有标题并且想提取特定的列数据,请尝试
import csv
with open('csv_file.csv', 'rU') as csv_file:
csvreader = csv.DictReader(csv_file)
for row in csvreader:
print("Rows: " + str(row))
if row['header1'] == '1':
print('Data: ' + row['header2'])
CSV文件内容:
header1,header2,header3
1,2,3
4,5,6
输出:
Rows: {'header2': '2', 'header3': '3', 'header1': '1'}
Data: 2
Rows: {'header2': '5', 'header3': '6', 'header1': '4'}
如果您有大量数据,则添加标头可以使您的生活更轻松,或者您将不得不使用csv.reader()并解析内容并根据需要进行拆分。
for row in
csv.reader() for row in
row ,然后将一个if和一些elifs放入for循环中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.