我有一个.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/