我试图使用python的beautifulsoup4包提取地址。文本所在的HTML块如下所示:
<address>
183 Main St<br>East Copper<br>Massachusetts<br>U S A<br>
MA 01516-113
</address>
我能够使用find和text.strip()方法获取地址,并且无需替换\ n和\ r \ n,但我会回来:
'183 Main StEast CopperMassachusettsU S A MA 01516-113'
这对我的目的来说可能没问题,但好奇心让我想要了解如何清理它。
我已经做了大量的修补和研究,以弄清楚如何让它返回一个格式良好的地址。我的意思是所有这一切都在一条线上(因为它是当前的),没有额外的空间和空间应该在诸如&#34;铜&#34;之类的东西之间。和&#34;马萨诸塞州&#34;。
通过认为正则表达式/代码可以帮助我是否错误地考虑了这个问题?我应该反复遍历<br>
标记并单独抓取每一行,然后将字符串与+
和空格组合吗?
非常感谢任何帮助。
答案 0 :(得分:1)
在这种情况下,理想的方式如下:
<!-- Content of the <body> tag -->
<header class="header">
<div class="head left">
<img src="logos.png" alt="logo" height="20">
</div>
<div class="head right">
<img src="logos.png" alt="logo" height="20">
</div>
</header>
<main class="cent">
<video id="tv-video" class="video-js vjs-fluid vjs-default-skin vjs-show-big-play-button-on-pause vjs-big-play-centered" controls autoplay preload="auto"></video>
</main>
<footer class="footer">
<img src="firma.png" alt="logo" height="20">
</footer>
输出:
from bs4 import BeautifulSoup
content="""
<address>
183 Main St<br>East Copper<br>Massachusetts<br>U S A<br>
MA 01516-113
</address>
"""
soup = BeautifulSoup(content,"lxml")
item = soup.find("address").get_text(" ",strip=True)
print(item)