给出以下字符串:
<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)
答案 0 :(得分:2)
避免使用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']
答案 1 :(得分:1)
您不需要使用正则表达式:
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']
答案 2 :(得分:1)
如果s
是您的地址阻止字符串:
parts = [re.sub(r'\s*\n\s*', '', p) for p in re.split(r'<br/?>', re.sub(r'</?address>', '', s))]