Skip to main content
 首页 » 编程设计

python之使用正则表达式查找模式

2025年05月04日23artech

这是我的测试示例

JT  - American journal of public health 
JID - 1254074 
SB  - AIM 
SB  - IM 
MH  - Adult 
MH  - Biomedical Research/*organization & administration 
MH  - Female 
MH  - Health Care Reform/*history/*methods 
AB  - OBJECTIVES: We assessed whether a 2-phase labeling and choice  
AB-  architecture intervention 
OWN - NLM 
STAT- MEDLINE 
DCOM- 20120417 
LR  - 20170220 
IS  - 1541-0048 (Electronic) 

我如何编写一个正则表达式来仅识别所有以“MH”开头的行之后的词汇,然后将它们导入到 Excel 工作表中。输出应该是这样的:

[Adult, Biomedical Research, organization & administration, Female, Health Care Reform, history, methods].  

这是我的尝试:

import re 
Path = "MH\s*.*"  
re.findall(Path,file)  

我知道这是错误的,但我不知道如何解决。

谢谢

请您参考如下方法:

看起来您需要执行一些正则表达式,因为您还想在/* 上拆分某些行。这应该可以解决问题!

import re 
 
my_file = """JT  - American journal of public health 
JID - 1254074 
SB  - AIM 
SB  - IM 
MH  - Adult 
MH  - Biomedical Research/*organization & administration 
MH  - Female 
MH  - Health Care Reform/*history/*methods 
AB  - OBJECTIVES: We assessed whether a 2-phase labeling and choice 
AB-  architecture intervention 
OWN - NLM 
STAT- MEDLINE 
DCOM- 20120417 
LR  - 20170220 
IS  - 1541-0048 (Electronic)""" 
 
my_list = my_file.splitlines() 
 
new_list = [] 
 
for item in my_list: 
    if re.search("^MH\s*-", item): 
        item = re.sub("[^-]+-\s*", "", item) 
        item = item.split("/*") 
        new_list = new_list + item 
 
print(new_list) 

输出:

['Adult', 'Biomedical Research', 'organization & administration', 'Female', 'Health Care Reform', 'history', 'methods'] 

我正在获取该字符串并将其放入列表中。我认为您很有可能在导入该字符串时将该字符串作为列表。我也喜欢一次处理 1 行正则表达式,这样以后更容易进行故障排除。

我正在匹配以 MH 开头的项目,然后捕获它们。然后,我在 /* 上拆分每个项目,并将所有这些项目放在一个漂亮的列表中,您可以将其用于 excel 导出。