TableAnalysis
Welcome!
Installation
Add this line to your application's Gemfile:
gem 'table_analysis'
And then execute:
$ bundle
Or install it yourself as:
$ gem install table_analysis
Usage
doc_table_html = File.read('file/demo1.html')
TableAnalysis::Main.generator(doc_table_html, header_start_row, selected_rows)
header start row, selected rows 都是从1开始
header start row: 找到header的tr出现在table的第几行,如果标题有多行,取第一行行号
selected rows: 取第几列数据,数这一行的colspan
举例
// doc
<table border="1">
<tr>
<td rowspan="2">月份</td>
<td colspan='2'>开销</td>
</tr>
<tr>
<td>生活</td>
<td>工作</td>
</tr>
<tr>
<td>1</td>
<td>$70</td>
<td>$100</td>
</tr>
<tr>
<td>2</td>
<td>$100</td>
<td>$80</td>
</tr>
</table>
取《开销》中《生活》列
headerStartRow: 1
通常的值都是1,如果表中有脏数据,导致标题不在第一个tr中的时候,我们对应做修改。
selectedRows: [2]
整个table有三列,第一列月份,第二列和第三列都是开销,生活数据是第二列。
p TableAnalysis::Main.generator(doc, 1, 2)
返回结果 [[0, 1, -1], [-1, 1, 0], [0, 1, 0], [0, 1, 0]]
返回值是整个表结构,1代表要取的结果,-1代表被占用, 0代表无用数据。
当去掉-1的值后,第一行有两列数据,第二行两列,第三行3列,第四行3列,就跟html的结构一样了, 迭代表结构,根据我们获得的结果中1的位置,就知道哪些数据是有用的数据了。
以后的版本里,我会提供一个方法,把返回结果直接用数据+值的结构返回。类似[{ '0':'月份', '1': '开销', '-1': '开销'}, ...], 再提供.values返回包含1和-1的结果,0对应的值返回空字符串。