【问题标题】:How to remove white space from HTML text如何从 HTML 文本中删除空格
【发布时间】:2016-05-19 09:54:12
【问题描述】:

如何删除代码中的空格?如果我用 Nokogiri 解析这个 HTML:

<div class="address-thoroughfare mobile-inline-comma ng-binding">Kühlungsborner Straße
                    10
                    </div>

我得到以下输出:

            Kühlungsborner Straße
            10

不是左对齐的。

我的代码是:

address_street = page_detail.xpath('//div[@class="address-thoroughfare mobile-inline-comma ng-binding"]').text

【问题讨论】:

  • 试试stripaddress_street = page_detail.xpath('//div[@class="address-thoroughfare mobile-inline-comma ng-binding"]').text.strip
  • 这行得通吗??
  • 感谢这个工作正常
  • 您的示例 HTML 不会导致您显示的输出。只有10 会缩进。将textxpath 一起使用,类似于searchxpath 的NodeSet 返回的节点返回连接文本。而不是将text 与返回NodeSet 的方法一起使用,您应该map 每个单独节点的text,然后strip 那些。

标签: ruby parsing nokogiri whitespace


【解决方案1】:

请尝试strip:

address_street = page_detail.xpath('//div[@class="address-thoroughfare mobile-inline-comma ng-binding"]').text.strip

【讨论】:

    【解决方案2】:

    考虑一下:

    require 'nokogiri'
    
    doc = Nokogiri::HTML('<div class="address-thoroughfare mobile-inline-comma ng-binding">Kühlungsborner Straße
                        10
                        </div>')
    doc.search('div').text
    # => "Kühlungsborner Straße\n                    10\n                    "
    puts doc.search('div').text
    
    # >> Kühlungsborner Straße
    # >>                     10
    # >>                     
    

    给定的 HTML 不会复制您遇到的问题。提供重复问题的有效输入非常重要。继续……

    不要将xpathcsssearchtext 一起使用。你通常不会得到你所期望的:

    require 'nokogiri'
    
    doc = Nokogiri::HTML(<<EOT)
    <html>
      <body>
        <div>
          <span>foo</span>
          <span>bar</span>
        </div>
      </body>
    </html>
    EOT
    
    doc.search('span').class # => Nokogiri::XML::NodeSet
    doc.search('span') # => [#<Nokogiri::XML::Element:0x3fdb6981bcd8 name="span" children=[#<Nokogiri::XML::Text:0x3fdb6981b5d0 "foo">]>, #<Nokogiri::XML::Element:0x3fdb6981aab8 name="span" children=[#<Nokogiri::XML::Text:0x3fdb6981a054 "bar">]>]
    
    
    doc.search('span').text
    # => "foobar"
    

    请注意,text 返回找到的所有节点的连接文本。

    相反,遍历 NodeSet 并获取单个节点的文本:

    doc.search('span').map(&:text)
    # => ["foo", "bar"]
    

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多