我有一个.csv文件(或者很可能是一个.txt文件),里面有一些记录:
JB74XYZ Kerry Katona 44 Mansion_House LV10YFB
WL67IAM William Iam 34 The_Voice_Street LN44HJU
等等
我使用python打开并读取文件,然后regex 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']
我已经对此进行了测试,看起来我正在使用正则表达式,因为它正确识别“匹配”并将其返回。
我已经将python词典作为索引事物的一种方式进行了探索,但是我遇到了一个问题,并且正如我所说的那样,正则表达式取得了积极成果。
我希望我已经足够具体,第一个问题在这里,我花了几个小时(而不是几分钟)寻找具体的解决方案,并尝试了一些想法。 我猜这不是一个特别棘手的概念,但如果可能,我可以提供一些提示。
答案 0 :(得分:2)
更好的方法是使用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']
答案 1 :(得分:1)
我使用csv module,在标签中读取文件作为分隔符,然后逐行比较。如果该行中存在匹配项,请将其附加到结果列表中。
答案 2 :(得分:0)
如果要读取.csv文件中的所有值,并将其保存在密钥为JB74XYZ
的字典中,并将其保存在与此相关的详细信息中。然后,您可以逐行阅读此文件,只需使用split(" ")
即可获取列表。然后,您可以通过从列表中删除第一个元素并使其成为键来轻松创建字典,并将剩余列表保存为字典的值。
如果你想使用常规表达,你应该参考这个链接:
https://docs.python.org/3/library/re.html用于从文件中提取详细信息并将其保存在元组中。
答案 3 :(得分:0)
您可以尝试re.search
,或者如果您要求它在开始时re.match
。两者都返回MatchObject
,其中包含有关操作的信息,包括对原始字符串的访问权限。例如,要获取剩余的字符串:
导入重新
reg = "(JB74XYZ)"
with open("RegDD.txt","r")as file:
for line in file:
line = line.strip()
match = re.match(reg,line.strip())
if match:
print (line[match.end():])
请注意,我必须将正则表达式更改为一个组,以告诉re
我想跟踪我匹配的位置。
答案 4 :(得分:0)
因此,在查看了所有优秀的回复后,我最终集中注意力(这里有一些建议)更详细地查看csv模块。随着一些挖掘,我最终得到了这个(而且,在这个阶段,我不确定我是怎么做到的......):
import csv
reg="TS74UIO"
reader = csv.reader(open('T3.csv'))
row=0
for row in reader:
if row[0] == reg:
print (row)
else:
row=+1
这导致输出我认为我能够写入另一个文件:
['TS74UIO', 'Kerry', 'Katona', '44', 'Mansion_House', 'LV10YFB']