无法删除爬取文本之间的空格

2024-10-01 22:41:46 发布

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

我用python编写了一个脚本,从一些html元素中提取一些文本。脚本现在可以解析它了。然而,问题是结果之间有一堆空格看起来很奇怪。我怎样才能修好它?任何帮助将不胜感激。在

这是应该从中删除文本的html元素:

html="""
<div class="postal-address">
        <p>11525 23 AVE</p>


        <p>EDMONTON,
        AB
        ,
        T6J 4T3
        </p>

        <p><a rel="nofollow" href="mailto:info@something.com">info@something.com</a></p>
        <p><a rel="nofollow" href="http://www.something.org" target="_blank">Visit our Web Site</a></p>
    </div>
"""

这是我正在尝试的脚本:

^{pr2}$

结果我得到了:

11525 23 AVE, EDMONTON,\n        AB\n        ,\n        T6J 4T3\n

预期结果:

11525 23 AVE EDMONTON, AB, T6J 4T3

我试图在这行[item.text for item in root.cssselect(".postal-address p")]中应用.strip().replace("\n",""),但它抛出了一个显示none type object的错误。在

顺便说一句,我不想有任何与regex相关的解决方案。提前谢谢。在


Tags: 文本div脚本元素abaddresshtmlsomething
3条回答
  1. 将源字符串拆分为逗号。在
  2. 从结果列表中的每个字符串中去掉前导空格或尾随空格。在
  3. 使用', '作为分隔符连接字符串。在

像这样:

src = '11525 23 AVE, EDMONTON,\n        AB\n        ,\n        T6J 4T3\n'
print(', '.join([s.strip() for s in src.split(',')]))

输出

^{pr2}$

如果已经有字符串列表,则更容易:

^{3}$

当你这样做的时候。replace(“\n”,“”)我想你必须避开斜杠。这有时会令人困惑,如果不尝试的话,我无法告诉你需要多少个斜杠来逃避它,但请尝试其中一个。。。。在

.replace("\\n","")
.replace("\\\n","")
.replace("\\\\n","")

使用单引号时会发生什么?在

请尝试以下解决方案,如有任何问题,请通知我:

address = [" ".join(item.text.split()).replace(" ,", ",") for item in root.cssselect(".postal-address p") if item.text]

输出:

^{pr2}$

相关问题 更多 >

    热门问题