python - 检查 CSV 中的正则表达式

标签 python regex csv

我目前正在尝试运行我的 csv 文件并识别列中的行。

输出应类似于“此列仅包含字母字符”。

我当前的代码: 在我的方法中:

print('\nREGULAR EXPRESSIONS\n' +
              '----------------------------------')
        for x in range(0, self.tot_col):
            print('\n' + self.file_list[0][x] +
                  '\n--------------')  # Prints the column name

            for y in range(0, self.tot_rows + 1):

                if regex.re_alpha(self.file_list[y][x]) is True:
                    true_count += 1
                else:
                    false_count += 1

            if true_count > false_count:
                percentage = (true_count / self.tot_rows) * 100
                print(str(percentage) + '% chance that this column is alpha only')

            true_count = 0
            false_count = 0

self.file_list 是列表格式的 csv 文件。 self.tot_rowsself.tot_col 分别是程序中先前计算的总行数和总列数。

regex.re_alpha 已从文件导入,方法如下所示:

def re_alpha(column):
    # Checks alpha characters
    alpha_valid = alpha.match(column)
    if alpha_valid:
        return True
    else:
        return False

这目前有效,但是我无法添加其他正则表达式检查,例如字母、数字等

我尝试使用不同的正则表达式检查来复制 if 语句,但它不起作用。 我还尝试在 regex.py 文件中进行计数,但是计数停止于“1”并返回错误的信息。 我认为在 regex.py 文件中创建一个类会有帮助,但没有效果。

摘要: 我想对我的 csv 文件运行多个正则表达式检查,并通过列对它们进行排序。

提前致谢。

最佳答案

从上面的代码中,CSV 的第一行包含列名称。这意味着您可以创建一个字典来包含您的结果,其中键是列名称。

from csv import DictReader

reader = DictReader(open(filename))  # filename is the name of the CSV file

results = {}

for row in reader:
    for col_name, value in row.items():
        results.setdefault(col_name, []).append(regex.re_alpha(value)) 

现在您有一个名为“结果”的字典,其中包含按列名称存储的正则表达式检查的输出。然后您可以输出统计数据。或者,您可以在列表中读取行时保存行,一旦决定顺序,您可以返回并将行输出到新的 CSV 文件,方法是使用新顺序中的键输出每个字典中的项目。

csv_writer = csv.writer(open(output_filename, 'w'))

new_order = [list of key names in the right order]
for row in saved_data:
    new_row = map(row.get, new_order)
    csv_writer.writerow(new_row)

诚然,这只是一个草图,但它应该可以帮助您继续前进。

关于python - 检查 CSV 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973355/

相关文章:

javascript - 使用正则表达式测试电子邮件地址中 `@` 符号后是否没有特殊字符或仅数字

Python Pandas : Error tokenizing data. C 错误:读取 1GB CSV 文件时字符串内的 EOF 开始

python - 为什么元组在保存到 csv 并重新加载数据框(pandas)后会变成字符串?

python - 在 Python 3.2 中,我可以使用 http.client 打开和阅读 HTTPS 网页,但 urllib.request 无法打开同一页面

regex - 使用 sed 和 awk 编辑文件中的行

python - Pyqt5列表QPushbutton添加边框图像

javascript - 如何用新值替换每个匹配组?

python - 添加文件名作为 CSV 文件的最后一列

python - 如何在 scikit-learn 中使用交叉验证获得预测概率

python - 如何知道 pip 本身的版本