为了账号安全,请及时绑定邮箱和手机立即绑定

删除地址标签并拆分

删除地址标签并拆分

至尊宝的传说 2021-06-04 14:49:42
给定以下字符串:<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']


查看完整回答
反对 回复 2021-06-08
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

如果s是您的地址块字符串:

parts = [re.sub(r'\s*\n\s*', '', p) for p in re.split(r'<br/?>', re.sub(r'</?address>', '', s))]



查看完整回答
反对 回复 2021-06-08
?
繁花不似锦

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']


查看完整回答
反对 回复 2021-06-08
  • 3 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信