Jus*_*ner 4 ruby unicode nokogiri
我正在使用解析此文档nokogiri.我发现…该页面中有一些(elipses)字符,无法删除.我想知道如何使用Ruby将所有…(elipses)替换为...(三个句点).
顺便说一下,你可以搜索这个字符串来查找全部 …s
指定是否ALTER TABLE
编辑:我添加了我的程序和错误消息.
# encoding: UTF-8
require 'nokogiri'
require 'open-uri'
require 'terminal-table'
def change s
{Nokogiri::HTML(" ").text => " ",
Nokogiri::HTML(""").text => '"',
Nokogiri::HTML("™").text => '(TM)',
Nokogiri::HTML("&").text => "&",
Nokogiri::HTML("<").text => "<",
Nokogiri::HTML(">").text => ">",
Nokogiri::HTML("©").text => "(C)",
Nokogiri::HTML("®").text => "(R)",
Nokogiri::HTML("¥").text => " "}.each do |k, v|
s.gsub!(k, v)
end
s
end
doc = Nokogiri::HTML(open('http://msdn.microsoft.com/en-us/library/ms189782.aspx').read.tr("…","..."))
temp = []
doc.xpath('//div[@class="tableSection"]/table[position() = 1]/tr').each do |e|
temp << e.css("td, th").map(&:text).map(&:strip).map {|x| x = change x; x.split(/\n/).map {|z| z.gsub(/.{80}/mi, "\\0\n")}.join("\n")}
end
table = Terminal::Table.new
table.headings = temp.shift
table.rows = temp
puts table
Run Code Online (Sandbox Code Playgroud)
错误:
F:\dropbox\Dropbox\temp>ruby nokogiri.rb
nokogiri.rb:21: invalid multibyte char (UTF-8)
nokogiri.rb:21: invalid multibyte char (UTF-8)
nokogiri.rb:21: syntax error, unexpected $end, expecting ')'
...ary/ms189782.aspx').read.tr("í¡","..."))
... ^
F:\dropbox\Dropbox\temp>
Run Code Online (Sandbox Code Playgroud)
"It was a dark and stormy night\xe2\x80\xa6".gsub("\xe2\x80\xa6", "...")\nRun Code Online (Sandbox Code Playgroud)\n
它可能取决于您正在使用的文件的编码,但请尝试使用
"\u2026"
Run Code Online (Sandbox Code Playgroud)
对于单字符3点又称" 水平省略号 "(您要替换的那个).