Tag: 解析

让轨道接受欧洲日期格式(年/月/日)

我希望我的rails应用程序接受日期字段的日期,格式为dd / mm / yyyy。 在我的模型中,我试图将日期转换为美国标准,我认为Rails将调用它的Date.parse方法是期望的: before_validation :check_due_at_format def check_due_at_format self.due_at = Date.strptime(self.due_at,”%d/%m/%Y”).to_time end 但是,这会返回: TypeError in OrdersController#update can’t dup NilClass 如果知道有用,则表单字段是在订单中嵌套,订单设置为: accepts_nested_attributes_for :items, :reject_if => lambda { |a| a[:quantity].blank? && a[:due_at].blank? }, :allow_destroy => :true 因此,这些项目正在@ order.save / @ order.update_attributes上进行validation和保存/更新 谢谢!

树顶基本解析和正则表达式用法

我正在使用ruby Treetop库开发一个脚本,并且正在使用其正则表达式的语法。 首先,许多在其他设置中工作的正则表达式在树梢上不起作用。 这是我的语法:(myline.treetop) 语法MyLine 规则线 字符串空白条件 结束 规则字符串 [\ S] * 结束 规则空白 [\ S] * 结束 规则条件 “new”/“old”/“used” 结束 结束 这是我的用法:(usage.rb) 需要’rubygems’ 需要’树梢’ 要求’多语言’ 要求’myline’ parser = MyLineParser.new p parser.parse(“randomstring new”) 这应该找到新的词肯定,它确实! 现在我不会扩展它,以便它可以找到新的如果输入字符串变为“randomstring anotherstring new yetanother andanother”并且可能在规则条件的正则表达式之前和之后具有任意数量的字符串,后跟空格(包括选项卡)。 换句话说,如果我将任何带有“new”等单词的句子传递给它,它应该能够匹配它。 所以我要说我将语法改为: 规则线 字符串空白条件空白字符串 结束 然后,它应该能够找到匹配: p parser.parse(“randomstring new anotherstring”) 那么,我必须做些什么来允许在条件之前和之后重复字符串空白? 如果我试着写这个: 规则线 (字符串空白)*条件(空白字符串)* 结束 ,它进入一个无限循环。 […]

为什么Parslet(在Ruby中)在解析空字符串文字时会返回一个空数组?

我正在玩小册子。 这是一个简单的解析器,它向我展示了一些非显而易见的行为。 require ‘parslet’ class Parser > term >> quote end rule(:string) { quoted( (escape_char >> any | quote.absent? >> any).repeat.as(:string) ) } end 显然,它应该解析双重字符串。 确实如此。 但是以下结果对我来说似乎很奇怪。 Parser.new.string.parse ‘””‘ 此代码返回{:string=>[]} 。 为什么在那里empty array而不是empty string ? 我错过了什么? 我正在使用ruby 2.1.1和parslet 1.6.1

nokogiri +通过文本机械化css选择器

我是nokogiri的新手,到目前为止最熟悉CSS选择器,我试图从表中解析信息,下面是表的示例和我正在使用的代码,我坚持使用相应的if语句,如它似乎返回表的全部内容。 表: … SPECIFIC TEXT What I want 我的脚本:(如果在表中找到SPECIFIC TEXT,它返回每个“div.c2 span.data”变量 – 所以我要么搞砸了我对do循环或if语句的了解) data = [] page.agent.get(url) page.search(‘div.row’).each do |row_data| if (row_data.search(‘div.c1:contains(“/SPECIFIC TEXT/”)’).text.strip temp = row_data.search(‘div.c2 span.data’).text.strip data << temp end end

如何在Ruby中处理巨大的JSON文件作为流,而不占用所有内存?

我在Ruby中处理一个巨大的JSON文件时遇到了麻烦。 我正在寻找的是一种逐个处理它的方法,而不会在内存中保留太多数据。 我认为yajl-ruby gem会做这项工作,但它会消耗我所有的记忆。 我也看过Yajl :: FFI和JSON:Streamgem,但有明确说明: 对于较大的文档,我们可以使用IO对象将其流式传输到解析器中。 我们仍然需要解析对象的空间,但文档本身永远不会完全读入内存。 这是我对Yajl的所作所为: file_stream = File.open(file, “r”) json = Yajl::Parser.parse(file_stream) json.each do |entry| entry.do_something end file_stream.close 内存使用量持续增加,直到进程被终止。 我不明白为什么Yajl会在内存中保留已处理的条目。 我可以以某种方式释放它们,还是我误解了Yajl解析器的function? 如果无法使用Yajl完成:有没有办法在Ruby中通过任何库?

如何在Rails中解析CSV时更改编码

我想知道如何在导入和解析CSV文件时更改CSV文件的编码。 我有这个代码: csv = CSV.parse(output, :headers => true, :col_sep => “;”) csv.each do |row| row = row.to_hash.with_indifferent_access insert_data_method(row) end 当我读取我的文件时,我收到此错误: Encoding::CompatibilityError in FileImportingController#load_file incompatible character encodings: ASCII-8BIT and UTF-8 我读到了关于row.force_encoding(‘utf-8′)但它不起作用: NoMethodError in FileImportingController#load_file undefined method `force_encoding’ for # 谢谢。

Java中的Ruby解析器

我正在做的项目是用Java和解析器源代码文件编写的。 (Java src到现在为止)。 现在我想启用解析Ruby代码。 因此,我在寻找一个解析Ruby源代码的Java解析器。 到目前为止,我唯一能找到的是Ruby中的Ruby解析器(ParseTree和RubyParser ……)。 我可以用JRuby中的Ruby解析器解析我想要的源文件,然后从那里访问我的Java东西。 但这意味着我将无法重用我以前编写的许多Java代码。 有没有一个像Java一样体面的Ruby解析器,我有没有找到它? 或者有人看到更好的解决方案?

用Ruby创建一个Verilog解析器

我想创建一个用Ruby编写的Verilog解析器,用于大学项目 我知道有像Bison和Yacc这样的解析器生成器。 谁能给我一些关于如何开始的建议?

解析人名并在Ruby中匹配它们

我正在寻找一个gem或项目,让我发现两个名字是同一个人。 例如 JR Smith == John R. Smith == John Smith == John Roy Smith == Johnny Smith 我想你应该已经明白了。 我知道没有什么是100%准确的,但我想得到的东西至少可以处理大多数情况。 我知道最后一个可能需要一个昵称数据库。

Ruby提取PDF格式的阿拉伯语文本

我通常使用此代码从PDF中提取文本: require ‘rubygems’ require ‘pdf/reader’ filename = File.expand_path(File.dirname(__FILE__)) + “/myfile.pdf” PDF::Reader.open(filename) do |reader| reader.pages.each do |page| puts page.text end end 这次我想解析阿拉伯语PDF,但是,使用这段代码,我得到了一堆奇怪的字符。 例如: ±πNuô ≠ö ¥πbËÊ ´Lö Ë«_°u«» ±GKIW √±U±Nr ËîUÅW √Ê ´bœ Ë≠w «∞LπLuŸ, ¥L 我已经读过那个coding: utf-8对于阿拉伯语很好,所以,有什么解决方案吗?