使用正则表达式从Python中的大字符串中剥离

时间:2019-06-25 14:50:05

标签: python-3.x web-scraping beautifulsoup

我需要从字符串中提取字符模式,并将字符串用作文件名

问题: 有问题的字符串是

Algoxasx(AGC)Tomcat空灵(BAA)大胖(BGI)大王府(BAU)MEP Ezay(EYI)东边界(EYUS)Sasha Banks(ME)大峡谷(GCP)....

背景: 上面的字符串是通过使用Beautiful Soup与Python一起解析网站而获得的-通过使用类和属性以及html解析器,这是一个更容易的部分。请原谅,该代码无法完整发布,因为这是我学校的研究项目,拥有代码的版权

目标: 我想从上面的字符串(AGC),(BGI),(BAU),(EYI)中剥离出来。。。仅提取Algoxasx Tomcat BIG Fat Big King Locattion等。我想稍后在这些提取的名称中使用例如,如果下载了文件,则使用单独的方式将其用作文件名来存储文件。

到目前为止我尝试过的是:  我使用正则表达式将上面的(AGC),(BAA),(BGI)剥离为列表,并使用了replace方法(用空白替换)和strip方法以及regex来提取不带大写字母的括号的字符串。尝试使用拆分方法,但它拆分单个字母而不是单词

 data1=required_data.find(class_='dropdown-menu select-pipe-dropdown- 
 menu',attrs={'id':'dropdown'}).get_text
 r2=re.findall(r'\([^\)]*[A-Z]{2}[^\)]*\)',data1)
 w=data1.replace(r2,'')
 print(w)

data1方法包含整个字符串Algoxasx(AGC)Tomcat空灵(BAA)BIG脂肪(BGI)大王位置(BAU)MEP Ezay(EYI)东边界(EYUS)Sasha Banks(ME)大峡谷(GCP) )

r2变量提取(AGC),(BGI),(BAU),(EYI)作为列表

预期结果1: Algoxasx Tomcat虚无心大胖子大国王位置MEP Ezay东边界线Sasha Banks大峡谷

预期结果2: 单独将上述字符串分开,以便我可以在for循环中分别使用它们,例如Algoxasx,Tomcat空灵,BIG Fat,Big King位置,MEP Ezay East Borderline,Sasha Banks,大峡谷

1 个答案:

答案 0 :(得分:0)

使用re.split(),您可以根据正则表达式规则分割字符串:

s = '''
Algoxasx (AGC)Tomcat Empty Mind (BAA)BIG Fat (BGI)Big King Location (BAU)MEP Ezay (EYI)East Borderline (EYUS)Sasha Banks (ME)Grand Canyon (GCP)
'''

import re
from pprint import pprint

data = [d.strip() for d in re.split(r'\([A-Z]{2,}\)', s) if d.strip()]
pprint(data)

打印:

['Algoxasx',
 'Tomcat Empty Mind',
 'BIG Fat',
 'Big King Location',
 'MEP Ezay',
 'East Borderline',
 'Sasha Banks',
 'Grand Canyon']