python)使用正则表达式查找所有匹配项(从 re.search 更改为 re.findall)[重复]
Posted
技术标签:
【中文标题】python)使用正则表达式查找所有匹配项(从 re.search 更改为 re.findall)[重复]【英文标题】:python) find all matches using regex (changed to re.findall from re.search) [duplicate] 【发布时间】:2019-07-23 16:49:45 【问题描述】:我正在尝试提取关键字 (Exhibit) 旁边的 所有匹配项 数字 (nn.nn)。例如,
through April 25, 2012
through April 25, 2012
Exhibit 99.6
Exhibit 99.10
这是我的代码。
import os,re
import numpy as np
os.chdir('C:\\Users\\dul\\Dropbox\\CTO\\test')
def extract_data(filename):
with open(filename, 'r') as file1:
text1=file1.read()
matchexh = re.findall(r'Exhibit (\d+).(\d+)',text1)
with open('outfile.txt', "a+") as outfile:
outfile.write("\n"+matchexh)
files= os.listdir("C:\\Users\\dul\\Dropbox\\CTO\\test")
for file in files:
if ".txt" in file:
extract_data(file)
当我运行它时,我收到一条错误消息
File "C:\Users\dul\Dropbox\CTO\test\exhibitno.py", line 13, in extract_data outfile.write("\n"+matchexh) TypeError: cannot concatenate 'str' and 'list' objects
如何获取所有匹配项并列出它们?
【问题讨论】:
您正在寻找re.findall()
。 re.search()
停在第一场比赛。
【参考方案1】:
改变这个:
matchexh = re.search(r'Exhibit (\d+).(\d+)',text1).group().strip()
到:
matchexh = re.findall(r'Exhibit (\d+).(\d+)',text1)
【讨论】:
我也是这么想的,但是出现了错误TypeError: cannot concatenate 'str' and 'list' objects... @Andre Well...matchexh
是一个列表,因此您需要在执行"\n" + matchexh
之前将其转换为字符串。 (也许使用 str.join?)
写入文件时添加" ".join(matchexh)
。
谢谢大家!它有效!
请不要忘记将此标记为正确答案!谢谢:)以上是关于python)使用正则表达式查找所有匹配项(从 re.search 更改为 re.findall)[重复]的主要内容,如果未能解决你的问题,请参考以下文章