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

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




我已经使用python打开和读取文件,然后使用正则表达式findall(并尝试了类似的正则表达式规则)来识别匹配项:

import re
from re import findall

reg = "JB74XYZ"

with open("RegDD.txt","r")as file:
    data=file.read()
    search=findall(reg,data)

print (search)


给出结果输出:

['JB74XYZ']


我已经对此进行了测试,并且似乎可以使正则表达式findall正常运行,因为它可以正确识别“匹配”并返回它。


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


我已经将python字典作为索引事物的一种方法,但是我碰壁了,正则表达式返回了一个积极的结果。


我猜想第二个问题可能是:我是否完全选择了错误的方法?


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

最佳答案

解决此问题的更好方法是使用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输出以下内容:

['JB74XYZ', 'Kerry', 'Katona', '44', 'Mansion_House', 'LV10YFB']

关于python - Python正则表达式findall读取.csv文件中的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36603790/

10-12 18:26
查看更多