Tag: 解析

从“strings / that / are / paths”数组构建XML树(在Ruby中)

如果你有一个字符串路径数组,在Ruby中构建XML树的最佳方法是什么? paths = [ “nodeA1”, “nodeA1/nodeB1/nodeC1”, “nodeA1/nodeB1/nodeC1/nodeD1/nodeE1”, “nodeA1/nodeB1/nodeC2”, “nodeA1/nodeB2/nodeC2”, “nodeA3/nodeB2/nodeC3” ] xml = 我的第一个想法是将路径字符串拆分为一个数组,并将其深度和内容与前一个数组进行比较,但是如果我到达路径“nodeA1 / nodeB1 / nodeC1 / nodeD1 / nodeE1”,当我回到“nodeA1 / nodeB1 / nodeC2”,[1]节点是共同的祖先,但跟踪它是混乱的,至少我这样做的方式。 我也想让它递归,所以我可以在它自己的函数中处理每个嵌套级别,但还没有达到任何半通用的解决方案。 当你遇到这个问题时,你们常常做的任何想法或事情? 谢谢! 长矛

Ruby:解析,替换和评估字符串公式

我正在为朋友的心理调查项目创建一个简单的Ruby on Rails调查应用程序。 所以我们有调查,每个调查都有一堆问题,每个问题都有参与者可以选择的选项之一。 没什么好激动的。 其中一个有趣的方面是每个答案选项都有一个与之相关的分数值。 因此,对于每个调查,需要根据这些值计算总分。 现在,我的想法是,不是硬编码计算,而是允许用户添加一个公式,通过该公式计算总调查分数。 示例公式: “Q1 + Q2 + Q3” “(Q1 + Q2 + Q3) / 3” “(10 – Q1) + Q2 + (Q3 * 2)” 所以只是基本的数学(为了清晰起见,附加一些括号)。 我们的想法是保持公式非常简单,这样任何拥有基本数学的人都可以输入它们,而无需解析某些奇特的语法。 我的想法是采用任何给定的公式,并用基于参与者选择的分数值替换Q1,Q2等占位符。 然后eval()新形成的字符串。 像这样的东西: f = “(Q1 + Q2 + Q3) / 2” # some crazy formula for this survey values = {:Q1 => […]

在ruby中处理大型CSV文件(20G)

我正在解决一些小问题,并且会就如何解决它提出一些建议:给定一个列数和行数未知的csv文件,输出一个包含值的列列表以及每个值重复的次数。 不使用任何库。 如果文件很小这应该不是问题,但是当它是几个Gigs时,我得到NoM​​emoryError:无法分配内存。 有没有办法创建一个哈希并从磁盘读取而不是将文件加载到内存? 你可以在perl中使用绑定哈希来做到这一点 编辑:IO#foreach会将文件加载到内存中吗? File.open(filename).each怎么样?

寻找有关如何将PDF转换为结构化格式的建议

我想对即将到来的拍卖中列出的一些房产做一些分析。 不幸的是,运营拍卖的城市并没有以结构化格式发布信息,而是提供了700多页的拍卖物业PDF 。 我想知道社区是否有任何关于如何解析所述PDF到结构化格式以插入数据库或创建属性的电子表格的想法。 这是每个页面代表的图像: 这是一个列出一些属性的页面: 我对python和ruby很满意所以我没有任何问题编写解决方案,但因为“列”和那些列中的数据没有必要绑在一起,看起来这可能是一个可疑的命题。 任何想法将不胜感激。

如何使用Nokogiri解析XML文件?

我和Nokogiri有些问题。 我试图解析这个XML文件: A Funfair in Bangkok Funfair in Bangkok True A small funfair near On Nut in Bangkok. 2009-08-03T00:00:00 False Funfair in Bangkok A small funfair near On Nut in Bangkok. Anthony Bouch Copyright © Anthony Bouch 2009-08-07T19:22:08 Funfair Bangkok Thailand Bumper Cars at a Funfair in Bangkok Bumper cars at a small funfair near […]

ruby有哪些基于语法的解析器生成器工具?

我在Ruby中有哪些开源(最好是基于gem)的解析器 – 生成器选项? 我过去曾使用C语言(flex&bison)|(lex&yacc),我对BNF风格的规格感到满意。 我听说过树梢,但与yacc相比,它看起来有点陌生和冗长…… 目的:我想将我的文本标记语言转换为BNF并生成解析代码。

Ruby on Rails和来自URL的JSON解析器

我使用’gem json’并且需要从某个url加载JSON数据,例如: “http://locallhost:3000/qwerty/give_json.json” {“one”:”Omg”,”two”:125,”three”:”Hu”} 我有rails app class QwertyController < ApplicationController require 'json' def get_json source = "http://localhost:3000/qwerty/give_json.json" @data = JSON.parse(JSON.load(source)) end end 我收到错误 JSON::ParserError in QwertyController#get_json 795: unexpected token at ‘http://localhost:3000/qwerty/give_json.json’ 在字符串中:@data = JSON.parse(JSON.load(source)) 有什么事? 如何获取JSON数据并解析它? 我试试@data [“one”] ……

Ruby:如何处理带有“坏逗号”的CSV文件?

我需要从FedEx.com处理包含送货历史的CSV文件。 不幸的是,FedEx似乎没有真正测试其CSV文件,因为它没有引用其中包含逗号的字符串。 例如,公司名称可能是“Dog Widgets,Inc。” 但CSV不引用该字符串,因此任何CSV解析器都会在“Inc.”之前认为该逗号 是一个新领域的开始。 有什么办法可以使用Ruby可靠地解析这些行吗? 我能找到的唯一区别特征是,作为字符串一部分的逗号在此之后有一个空格。 分隔字段的逗号没有空格。 不知道这有助于我解析这个,但这是我注意到的。

学习树顶

我正在尝试自学Ruby的Treetop语法生成器。 我发现,不仅文档中的“最佳”文档非常稀疏,而且它似乎并不像我希望的那样直观。 在高层次上,我真的很喜欢比现场文档或video更好的教程,如果有的话。 在较低的层次上,这是一个我根本无法工作的语法: grammar SimpleTest rule num (float / integer) end rule float ( (( ‘+’ / ‘-‘)? plain_digits ‘.’ plain_digits) / (( ‘+’ / ‘-‘)? plain_digits (‘E’ / ‘e’) plain_digits ) / (( ‘+’ / ‘-‘)? plain_digits ‘.’) / (( ‘+’ / ‘-‘)? ‘.’ plain_digits) ) { def eval text_value.to_f end } end […]

以编程方式向YAML添加注释

给定简单的YAML文件进行本地化: root: label: ‘Test’ account: ‘Account’ add: ‘Add’ local_folder: ‘Local folder’ remote_folder: ‘Remote folder’ status: ‘Status’ subkey: ‘Some value’ 如何在Ruby中以编程方式为某些键添加注释到行尾? 我需要得到类似的东西: root: label: ‘Test’ account: ‘Account’ add: ‘Add’ local_folder: ‘Local folder’ #Test comment remote_folder: ‘Remote folder’ status: ‘Status’ subkey: ‘Some value’ #Test comment 有没有其他方法(可能使用Linux sed)来实现这一目标? 我的理由是准备YAML文件以进行进一步处理。 (注释将作为外部工具的标签来识别键)。