Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法删除已删除文本之间的空格_Python_Python 3.x_Web Scraping_Lxml.html - Fatal编程技术网

Python 无法删除已删除文本之间的空格

Python 无法删除已删除文本之间的空格,python,python-3.x,web-scraping,lxml.html,Python,Python 3.x,Web Scraping,Lxml.html,我用python编写了一个脚本,从一些html元素中提取一些文本。脚本现在可以解析它了。然而,问题是结果看起来很奇怪,它们之间有一堆空格。我怎样才能修好它?我们将非常感谢您的帮助 这是文本应从中删除的html元素: html=""" <div class="postal-address"> <p>11525 23 AVE</p> <p>EDMONTON, AB ,

我用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>
"""
结果我有:

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(“.posal address p”)]
中应用
.strip()
.replace(“\n”,”)

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

当你这样做时。替换(“\n”,”)我认为你必须避开斜杠。这有时会让人困惑,如果不尝试,我无法告诉您需要多少个斜杠才能摆脱它,但请尝试其中一个

.replace("\\n","")
.replace("\\\n","")
.replace("\\\\n","")
使用单引号时会发生什么

  • 使用逗号拆分源字符串
  • 去掉结果列表中每个字符串的任何前导或尾随空格
  • 使用“
    ”、“
    作为分隔符连接字符串
  • 像这样:

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

    11525 23 AVE, EDMONTON, AB, T6J 4T3
    

    如果您已经有一个字符串列表,这就更容易了:

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

    请尝试以下解决方案,并在出现任何问题时通知我:

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


    谢谢你的回答。它似乎在工作,但我应该如何在这一行中应用相同的
    [item.text for item in root.cssselect(“.posal address p”)]
    ,这是这里主要关心的问题。@top抱歉,我以为您只需要转换一个字符串,我没有注意到您已经有一个字符串列表,因为在您的“Result I'm having:”没有打印任何括号。如果已经有字符串列表,则不需要执行
    .split
    步骤。我很快会在我的答案中添加更多的代码。非常感谢Andersson先生提供了如此有效的答案。您总是特定于所需的输出。再次感谢。
    address = [" ".join(item.text.split()).replace(" ,", ",") for item in root.cssselect(".postal-address p") if item.text]
    
    ['11525 23 AVE', 'EDMONTON, AB, T6J 4T3']