删除地址标签并拆分

给定以下字符串:


<address>

        113 N Michigan St<br/>Chicago, IL 60661

</address>

如何拆分它以便它返回两个字符串:


113 N Michigan St

Chicago, 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)


至尊宝的传说
浏览 106回答 3
3回答

繁华开满天机

避免regex用于解析 html 数据。使用专门为此设计的东西BeautifulSoup>>> text = """<address>...&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;113 N Michigan St<br/>Chicago, IL 60661... </address>""">>>&nbsp;>>> from bs4 import BeautifulSoup>>> soup = BeautifulSoup(text, "html.parser")>>>&nbsp;>>> [addr.strip() for tag in soup.find_all('address') for addr in tag.strings]['113 N Michigan St', 'Chicago, IL 60661']

胡子哥哥

如果s是您的地址块字符串:parts&nbsp;=&nbsp;[re.sub(r'\s*\n\s*',&nbsp;'',&nbsp;p)&nbsp;for&nbsp;p&nbsp;in&nbsp;re.split(r'<br/?>',&nbsp;re.sub(r'</?address>',&nbsp;'',&nbsp;s))]

繁花不似锦

您不需要使用正则表达式:s = '''<address>&nbsp; &nbsp; &nbsp; &nbsp; 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']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python