如何在Ruby循环中使用XPath循环

布莱德·韦斯特

我正在尝试查找文档中要删除的元素。我能够使用类似这样的方式手动构建查询:

article.xpath("//*[@*[contains(., 'popular')]]", "//*[@*[contains(., 'comments')]]", "//*[@*[contains(., 'social-share')]]").each do |node|
  node.remove
end

使用变量也可以:

line = 'related'
article.xpath("//*[@*[contains(., '#{line}')]]").each do |node|
  node.remove
end

我想将所有单词添加到一个单独的文件中并循环该文件。我已经尝试了以下方法,但是它不起作用(静默故障-无输出)。

file = 'stop_words.txt'
File.readlines(file).each do |line|
  article.xpath("//*[@*[contains(., '#{line}')]]").each do |node|
    node.remove
  end
end

File.readlines(file).each循环是工作的罚款。如果添加puts line,它将从stop_words.txt打印列表。为什么article.xpath循环不起作用?

另一个

文件中的每个“单词”末尾都包含一个换行符:

$ rm ~/test

$ printf "foo\nbar\nbaz" > ~/test

$ cat ~/test
foo
bar
baz

现在使用Ruby进行阅读:

words = File.readlines("#{Dir.home}/test")
=> ["foo\n", "bar\n", "baz"]

请注意,这些单词具有换行符,因此在执行此操作时:

article.xpath("//*[@*[contains(., '#{line}')]]")

您确实在做:

article.xpath("//*[@*[contains(., 'foo\n')]]")

最好的办法是使用chomp: true具有.readlines

words = File.readlines("#{Dir.home}/test", chomp: true)
=> ["foo", "bar", "baz"]

我不能说这是否真的解决了潜在的问题。但是我可以肯定地说,这是您代码中必须解决的错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在for循环中使用invalidate()

来自分类Dev

如何在for循环中使用awk?

来自分类Dev

如何在循环中使用 fgets?

来自分类Dev

如何在循环中使用 Collection

来自分类Dev

如何在 For 循环中使用 UIAlertController

来自分类Dev

如何在使用jstl的if循环中使用if循环

来自分类Dev

如何在循环python外的for循环中使用变量

来自分类Dev

如何在循环中使用递归方法退出循环?

来自分类Dev

Ruby在“ do”循环中使用哈希

来自分类Dev

如何在bash的for循环中使用命令的输出?

来自分类Dev

如何在巨型循环中使用GDB

来自分类Dev

如何在for循环中使用Django模型?

来自分类Dev

ES5,如何在循环中使用Promise

来自分类Dev

如何在for循环中使用read.table?

来自分类Dev

如何在角度循环中使用异步调用?

来自分类Dev

不确定如何在循环中使用列表理解

来自分类Dev

如何在parfor循环中使用tic / toc?

来自分类Dev

如何在while循环中使用openmp和break

来自分类Dev

如何在while循环中使用.nextInt()和hasNextInt()

来自分类Dev

我如何在for循环中使用@ Html.ActionLink

来自分类Dev

如何在循环中使用setText()递增JTextField名称

来自分类Dev

如何在逆向php循环中使用模数?

来自分类Dev

如何在无限循环中使用线程锁?

来自分类Dev

如何在循环中使用python矩阵的维数

来自分类Dev

如何在for循环中使用占位符?

来自分类Dev

如何在while循环中使用pow()?

来自分类Dev

如何在两个for循环中使用break?

来自分类Dev

如何在循环中使用多个输入?

来自分类Dev

如何在Java脚本循环中使用push?