我有一个csv文件,其中包含以下行:
{"Books \u3009 Arts & Photography \u3009 Sculpture \u3009 Appreciation": 342444, "Books": 4244234234875}
{"Books \u3009 Science": 342864, "Books": 44242875}
{"Books \u3009 Politics": 342444, "Books": 4135875}
我需要阅读csv文件并匹配"Books": \d+
,我只需要那个号码,并把它放在一个新的csv文件中
import csv
import json
import re
with open('input.csv', 'rb') as infile:
with open('output.csv', 'wb',) as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for line_num, line in enumerate(reader):
result = re.match(r'^"Books":(\d+)$', line[0])
writer.writerow([result])
但代码无法正常工作,基本上我收到空白单元格,这意味着我无法匹配所需的数据。如果我匹配.*
,我会收到'< _sre.SRE_Match对象,位于0x028B2800>'。
我试过不同的方法,把我推向正确的方向。感谢
答案 0 :(得分:0)
这不是一个CSV文件,而是一堆JSON对象放在一起。它们都显示有效,因此您只需解析它们并以这种方式提取数据:
import csv
import json
with open('input.csv', 'r') as infile, open('output.csv', 'w') as outfile:
writer = csv.writer(outfile)
for line in infile:
num_books = json.loads(line.strip())['Books']
writer.writerow([num_books])
在python 3.4中测试。