给定以下字符串:<address> 113 N Michigan St<br/>Chicago, IL 60661</address>如何拆分它以便它返回两个字符串:113 N Michigan StChicago, IL 60661而且,如果您有这样的字符串:<address> 113 n. Michigan St</address>它将返回:['113 n. Michigan St','']或者对于这个字符串类似:<address> Chicago, IL 60661</address>它将返回以下内容:['','Chicago, IL 60661']我试过把一些东西放在一起,但在正则表达式方面很糟糕:re.search(r'<address>\.(.*?)</address>', *above string here*).group(1)
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
避免regex用于解析 html 数据。使用专门为此设计的东西BeautifulSoup
>>> text = """<address>
... 113 N Michigan St<br/>Chicago, IL 60661
... </address>"""
>>>
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(text, "html.parser")
>>>
>>> [addr.strip() for tag in soup.find_all('address') for addr in tag.strings]
['113 N Michigan St', 'Chicago, IL 60661']
胡子哥哥
TA贡献1825条经验 获得超6个赞
如果s
是您的地址块字符串:
parts = [re.sub(r'\s*\n\s*', '', p) for p in re.split(r'<br/?>', re.sub(r'</?address>', '', s))]
繁花不似锦
TA贡献1851条经验 获得超4个赞
您不需要使用正则表达式:
s = '''<address>
113 N Michigan St<br/>Chicago, IL 60661
</address>'''
strs = s[s.index('<address>')+len('<address>'):s.index('</address>')].strip().split('<br/>')
#['113 N Michigan St', 'Chicago, IL 60661']
添加回答
举报
0/150
提交
取消