使用regex re.sub进行CSV读/写

时间:2013-08-07 16:41:58

标签: python regex csv

我想阅读CSV文件并使用以下方法重新编译:

re.sub('\s+(STREET|ST|TRAIL|TRL|TR)\s*$', '', test_file, flags=re.M)

我得到了:

TypeError: expected string or buffer 

使用时:

import csv
reader = csv.reader(open("some.csv", "rb"))
for row in reader:
    print row

import csv
writer = csv.writer(open("some.csv", "wb"))
writer.writerows(someiterable)

看起来我需要一个功能。有人有些吸烟吗?

1 个答案:

答案 0 :(得分:0)

您必须将一个字符串传递给re.sub()第三个参数,该参数可以是您的reader对象的一行。您已经可以将writer传递给将进行替换的迭代:

import csv
reader = csv.reader(open("input.csv", "rb"))
writer = csv.writer(open("output.csv", "wb"))
test = '\s+(STREET|ST|TRAIL|TRL|TR)\s*$'
writer.writerows( (re.sub(test, '', line[0], flags=re.M) for line in reader) )