使用RegExp,Python匹配csv数据

时间:2016-06-15 14:15:40

标签: python regex csv

我有一个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>'。 我试过不同的方法,把我推向正确的方向。感谢

1 个答案:

答案 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中测试。