Python regex findall读取.csv fi中的行

2024-10-01 09:29:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.csv文件(也可以是一个.txt文件),其中包含一些记录:

JB74XYZ Kerry   Katona  44  Mansion_House   LV10YFB
WL67IAM William Iam 34  The_Voice_Street    LN44HJU

等等

我使用python打开并读取文件,然后regex findall(并尝试使用类似的regex规则)来标识匹配项:

^{pr2}$

其结果是:

['JB74XYZ']

我已经测试过了,似乎我的regex findall工作正常,因为它正确地识别了一个“匹配”并返回了它。在

  1. 我的问题是,如何让“匹配”行的剩余内容也返回?(最终我会把这个写进一个新的文件中,但现在我只想打印匹配的行)。在

我曾经研究过python字典作为索引的一种方法,但是我遇到了一个问题,结果就是regex返回了一个积极的结果。在

  1. 我想第二个问题可能是:我选择的方法完全错误吗?在

我希望我已经足够具体,第一个问题在这里,我花了几个小时(不是几分钟)寻找具体的解决方案,并尝试了一些想法。 我想这不是一个特别棘手的概念,但如果可能的话,我可以给出一些提示。在


Tags: 文件csv方法txt记录regexhousewilliam
3条回答

我将使用csv module,读入以制表符作为分隔符的文件,然后逐行比较。如果该行中有匹配项,请将其附加到结果列表中。在

如果您想读取.csv文件中的所有值并将它们保存在一个字典中,其键为JB74XYZ,以及与此相关的详细信息。然后您可以逐行读取这个文件,只需使用split(" ")来获取列表。然后,只需从list中删除第一个元素并将其设为key并将剩余的list保存为dictionary的值,就可以轻松地生成dictionary。 如果要使用正则表达式,请参考以下链接: https://docs.python.org/3/library/re.html用于从文件中提取详细信息并将其保存在元组中。在

更好的处理方法是使用Python的csv模块。从你的CSV的外观来看,我猜它是制表符分隔的,所以我放弃了这个假设。在

import csv

match = "JB74XYZ"

matched_row = None
with open("RegDD.txt", "r") as file:
    # Read file as a CSV delimited by tabs.
    reader = csv.reader(file, delimiter='\t')
    for row in reader:
        # Check the first (0-th) column.
        if row[0] == match:
            # Found the row we were looking for.
            matched_row = row
            break

print(matched_row)

然后从matched_row输出以下内容:

^{pr2}$

相关问题 更多 >