gpt4 book ai didi

Python 搜索所有行中的模式,仅导出有结果的行

转载 作者:行者123 更新时间:2023-12-01 09:22:47 25 4
gpt4 key购买 nike

我想搜索与文本文件中的模式匹配的字符串并仅导出匹配的字符串

k=''
regex = re.compile(r'[a-zA-Z]{2}\d{8}')

with open(file, 'r') as f:
for line in f:
line = line.replace(',', '')
line = line.replace('.', '')
k = regex.findall(line)
#k.append(line)
if not k=='':
position=True
else:
position=False
if position==True:
print(k)

不知何故,我的代码不起作用,它总是返回以下输出:

[] [] [] [] [] [] [] ['AI13933231'] [] [] [] [] []

我希望输出仅包含匹配的字符串。谢谢你!

最佳答案

存在空数组文字 [] 的原因是因为该行实际上存在,但要么为空(仅包含 \n),要么与正则表达式不匹配'[a-zA-Z]{2}\d{8}'。请注意,regex.findall(line) 返回一个列表,因此如果正则表达式未找到任何匹配项,则它是一个空列表。

您的主要错误发生在本节中:if not k=='':。注意 k 是一个列表。

考虑这段代码:

import re

k=''
regex = re.compile(r'[a-zA-Z]{2}\d{8}')

with open("omg.txt", 'r') as f:
for line in f:
line = line.replace(',', '')
line = line.replace('.', '')
k = regex.findall(line)
#k.append(line)

position = False
if str(k) != '[]': # The `[]` is just the string representation of an empty array
position=True
print(k)
else:
position=False

给定文件(#后面的文本将被忽略,不是文件的一部分)

AZ23153133
# Empty line
AB12355342
gz # No match
XY93312344

输出将是

['AZ23153133']
['AB12355342']
['XY93312344']

关于Python 搜索所有行中的模式,仅导出有结果的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com