【发布时间】:2013-02-26 07:02:23
【问题描述】:
好吧,我有一个由一些开源软件输出的表格,但它没有以实际表格格式输出,例如
<table>
<thead>
<td>Heading</td>
<thead>
<tbody>
<tr>
<td>Content</td>
</tr>
<tbody>
</table
相反,开发该软件的人认为像这样输出表格是个好主意
+------------+-------------+-------+-------------+------------+---------------+----------+
| HEADING 1 | HEADING 2 | ETC | ANOTHER | HEADING3 | HEADING4 | SML |
+------------+-------------+-------+-------------+------------+---------------+----------+
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
| content | more content | cont | More more | content | content 2.0 | litl |
+------------+-------------+-------+-------------+------------+--------------+----------+
| TOTALS AGENTS:21 | total| total| total| total| total|
+------------+-------------+-------+-------------+------------+--------------+----------+
所以我不能构建一个网络抓取工具来获取数据,或者我不知道我是否可以构建一个抓取工具来抓取它,因为它全部包含在一个 <pre> </pre> 标签中。因此,相反,我一直在尝试使用 ruby 和 Regex 来尝试完成工作,到目前为止,我已经设法获得了所有领先的 | 并且我已经设法获得了标题 +-------+----- 但仅此而已因为似乎我必须在整个过程中重复该模式,它不想重复自己,好吧但是现在说得够多了这是我到目前为止使用的代码
text.lines.to_a.each do |line|
line.sub(/^\| |^\+*-*\+*\-*/) do |match|
puts "Regexp Match: " << match
end
STDIN.getc
puts "New Line "<< line
end
例如,第一行的输出仅为+-----------------+----------
它是 CSV 格式,所以我使用 Gsub 将剩余的 | 替换为 ,
我可以使用 PHP 或 Ruby,所以任何答案都非常受欢迎
【问题讨论】:
-
使用 HTML 解析器提取
pre标签内的文本,然后使用子字符串提取数据(我假设列在固定位置)。如果一个表的列宽是固定的,而在不同的表中不固定,那么你可以分析表头找出每列的宽度。 -
下面是一个示例,说明当前报告的外观 s7.postimage.org/gicwtx9xn/vicidial.png
-
@nhahtdh 列的宽度是固定的,我希望它们是使用半成品代码的乐趣-.-
-
|会出现在内容中吗?如果|没有出现在内容中,您可以按|拆分。固定宽度是指每列的宽度是固定的(不同的列可能有不同的宽度,但一列的所有行必须具有相同的宽度)。
标签: php ruby regex ruby-on-rails-3 codeigniter