【发布时间】:2019-06-30 11:18:25
【问题描述】:
我正在尝试将正则表达式 .findall() 搜索的结果保存到 csv 中,但在将结果附加到输出文件时遇到了困难。
由于我对 Python 还是很陌生,我试图将这个问题限制为仅使用 csv 和 re 库 - 但如果有更简单的方法(即在 pandas 中),这也将有助于了解。
如何将输入 CSV 的全部内容复制到输出 CSV 并将 postcode / found 正则表达式添加到找到它的行?
是否有任何明显形式的错误检查或我遗漏的其他内容?
是否存在更好的方法来将输入 CSV 的标头自动添加到输出 CSV 而无需明确指定它们?
是否可以使用 DictWriter 做到这一点?正如我最初尝试的那样。
import csv, re
pattern = r'[A-Z]{1,2}[0-9R][0-9A-Z]?[0-9][A-Z]{2}'
postcodes = []
with open(r'Postcode/addressin.csv', 'r') as csvinput:
csv_reader = csv.DictReader(csvinput)
with open(r'Postcode/addressout.csv', 'w', newline='') as csvoutput:
fieldnames = ['Address', 'Name']
csv_writer = csv.writer(csvoutput)
csv_writer.writerow(fieldnames)
for line in csv_reader:
postcodes = re.findall(pattern, line["Address"])
csv_writer.writerow(postcodes)
示例数据:
Address,Name,Lat,Long,2016 Sales,Type
48 Park Avenue, LATTON, SN6 4SZ,Nikki Yellowbeard,-23.17549,36.74641,9727,AA
IV21 1TD 116 Walwyn Rd CHARLESTOWN,Jonh Doe,-10.98309,156.41854,11932,AE
【问题讨论】:
-
为输入和输出 CSV 文件提供示例数据将有助于回答问题。
标签: python regex csv findall postal-code