【发布时间】:2016-12-05 07:20:02
【问题描述】:
我的任务是将 HTML 表格转换为二维数组,以便将内容写入 CSV 文件。我正在寻找创建第二个数组维度的最佳方法。这是我到目前为止所拥有的(带有示例数据):
$data = '<table style="width:100%"> <tr> <td>Jill</td> <td>Smith</td> <td>50</td> </tr> <tr> <td>Eve</td> <td>Jackson</td> <td>94</td> </tr> </table> '
$data = [regex]::matches($data, '<table.*?>(.+)</table>')
$data = $data[0].Groups[1].value
$arr = @()
$arr = [regex]::matches($data, '<tr.*?>(.*?)</tr>') | % {$_.Groups[1].value}
我现在有一个<tr> 行数组(减去<tr> 标记)。有没有办法接下来拆分 <td> 元素并从中创建一个数组数组?我可能会蛮力解决这个问题,但我觉得有一种更清洁且可能更优化的方式。
顺便说一句,我使用的是 PowerShell v2。
【问题讨论】:
-
这似乎是缺少的魔法线。如果有人在这里看到任何明显的错误,我会很高兴听到它们!
0..($arr.Length-1) | % { $arr[$_] = [regex]::matches($arr[$_], '<td.*?>(.*?)</td>') | % {$_.Groups[1].value} }
标签: html arrays csv powershell powershell-2.0