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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 pandas 数据框列中查找所有正则表达式匹配项

使用正则表达式在嵌套括号外查找匹配项

正则表达式查找所有匹配项,除了那些被字符包围的匹配项

如何使用正则表达式查找具有特定起始字符串的所有匹配项? [复制]

正则表达式从具有多个方括号的字符串中查找匹配项

python基础入门