在python中如何删除标记之间的额外空间或间隙

2024-06-16 10:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我正在从网站上抓取一个div网站的li标签。我得到了一个有很多空间的输出,我怎么才能从标签中去掉多余的空间 我使用python3.5.1和BeautifulSoup进行抓取 我的输出:

[<li>

        GUANGZHOU ADS AUDIO SCIENCE &amp; TECHNOLOGY CO.,LTD.

            </li>, <li>

              SHIMA ADS INDUSTRIAL DISTRICT GUANGZHOU GUANGDONG CHINA

            </li>, <li>

        GUANGDONGGUANGZHOU

            </li>, <li>

              510440

            </li>, <li>

              http://www.adsaudio.cc

            </li>]
[<li>

        GUANGDONG TEXTILES IMPORT &amp; EXPORT COMPANY LTD.

            </li>, <li>

              GUANGDONG ,NO.168 XIAO BEI RD.,GUANGZHOU

            </li>, <li>

        GUANGDONGGUANGZHOU

            </li>, <li>

              510045

            </li>, <li>

              http://www.gdtex.com

            </li>]

我想要的输出是

^{pr2}$

如何消除多余的空间或间隙


Tags: divhttp网站www空间li标签audio
2条回答

尝试对从Beautiful Soup返回的文本使用strip。在

假设您使用类似这样的方法从li标记中提取文本:text = soup.find('li').get_text(),然后在texttext.strip()上添加一个对strip()的调用,这应该会删除两端的空白。在

from bs4 import BeautifulSoup

def get_li_texts(html):
  soup = BeautifulSoup(html)
  li_list = soup.findAll('li')

  li_texts = []
  for li in li_list:
    text = li.get_text().strip()
    li_texts.append(text)
  return li_texts

html = '<li>\n\n        GUANGZHOU ADS AUDIO SCIENCE &amp; TECHNOLOGY CO.,LTD.\n\n            </li>, <li>\n\n              SHIMA ADS INDUSTRIAL DISTRICT GUANGZHOU GUANGDONG CHINA\n\n            </li>, <li>\n\n        GUANGDONGGUANGZHOU\n\n            </li>, <li>\n\n              510440\n\n            </li>, <li>\n\n              http://www.adsaudio.cc\n\n            </li>'
texts = get_li_texts(html)
>> [u'GUANGZHOU ADS AUDIO SCIENCE & TECHNOLOGY CO.,LTD.',
>> u'SHIMA ADS INDUSTRIAL DISTRICT GUANGZHOU GUANGDONG CHINA',
>> u'GUANGDONGGUANGZHOU',
>> u'510440',
>> u'http://www.adsaudio.cc']

您可以使用BeautifulGroup中的get_text方法

items = soup.find_all("li")
for item in items:
    print item.get_text().strip()

相关问题 更多 >