python - 生成新的 csv 文件并按升序排列数据?

标签 python python-3.x csv

我编写了一个代码,在“import_data.csv”文件中包含的每个邮政编码上实现给定的正则表达式。然后,它会生成一个新的 csv 文件“failed_validation.csv”,其中包含验证失败的所有邮政编码。这两个文件的结构格式如下:

row_id  postcode
134534  AABC 123
243534  AACD 4PQ
534345  QpCD 3DR
... ...

以下是我的代码:

import csv
import re

regex = r"(GIR\s0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9]((BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9])|([A-PR-UWYZ][A-HK-Y](AB|LL|SO)[0-9])|(WC[0-9][A-Z])|(([A-PR-UWYZ][0-9][A-HJKPSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))))\s[0-9][ABD-HJLNP-UW-Z]{2})"

codes = []

with open('../import_data.csv','r') as f:
    r = csv.reader(f, delimiter=',')
    for row in r:

     if not(re.findall(regex, row[1])):
      codes.append([row[0],row[1]])

with open('failed_validation.csv','w',newline='') as fp:
    a = csv.writer(fp)
    a.writerows(codes)

代码工作正常,但我真正想要的是新文件中的邮政编码需要根据 row_id 按升序数字顺序排序。我知道如何使用 Python 生成新文件,但我不知道如何按升序排列该文件内的数据。

最佳答案

这将完成并保留标题行:

import csv
import re

regex = r"(GIR\s0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9]((BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9])|([A-PR-UWYZ][A-HK-Y](AB|LL|SO)[0-9])|(WC[0-9][A-Z])|(([A-PR-UWYZ][0-9][A-HJKPSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))))\s[0-9][ABD-HJLNP-UW-Z]{2})"

codes = []
with open('import_data.csv', 'r', newline='') as fp:
    reader = csv.reader(fp, delimiter=',')
    header = next(reader)
    for row in reader:
        if not re.findall(regex, row[1]):
            codes.append([row[0],row[1]])

with open('failed_validation.csv', 'w', newline='') as fp:
    writer = csv.writer(fp)
    writer.writerow(header)
    writer.writerows(sorted(codes))

关于python - 生成新的 csv 文件并按升序排列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943292/

相关文章:

python - Elif 语句被忽略

python-3.x - 多线程请求 Python3

java - 在java中读取csv文件时跳行

python - 在 python 中映射 csv

linux - xls2csv + 禁用 XLS 中的空格

python - 如何访问 pandas 数据框中的值而不迭代每一行

python - 如何使用python docx将表格边框添加到word doc

javascript - 如何在 Windows 上从 Python 执行 Javascript?

python-3.x - 如何从数据框中返回“拼写不同”的名称

当 for 循环工作时,Python 多重处理不工作