Python Xpathでヘルプを評価してください。私は次のXMLコードを持っています。 現在、私はPythonを使用していて、1行ずつ読み込み、それを抽出しようとしています。しかし、私はテーブルが1000行の長さであることを理解しています。Python Xpathを使用してCSVファイルにデータを抽出する
私はXMLコードからこのデータを抽出し、csvファイルに入力したいと考えています。
Xpathを使用するにはどうすればいいですか?
サンプルXMLコード:
<thead>
<tr>
<th class="section" data-bind="text: name">Ratios</th>
<!-- ko foreach : $parent.dataPoints -->
<th>
<span data-bind="text: absPeriod.indexOf('LTM') != -1 ? 'LTM Ending' : absPeriod">FY2013</span>
<br>
<span data-bind="text: periodDate, format: 'date'">30/Jun/2013</span>
</th>
<th>
<span data-bind="text: absPeriod.indexOf('LTM') != -1 ? 'LTM Ending' : absPeriod">FY2014</span>
<br>
<span data-bind="text: periodDate, format: 'date'">30/Jun/2014</span>
</th>
<th>
<span data-bind="text: absPeriod.indexOf('LTM') != -1 ? 'LTM Ending' : absPeriod">FY2015</span>
<br>
<span data-bind="text: periodDate, format: 'date'">30/Jun/2015</span>
</th>
<th>
<span data-bind="text: absPeriod.indexOf('LTM') != -1 ? 'LTM Ending' : absPeriod">FY2016</span>
<br>
<span data-bind="text: periodDate, format: 'date'">30/Jun/2016</span>
</th>
<th>
<span data-bind="text: absPeriod.indexOf('LTM') != -1 ? 'LTM Ending' : absPeriod">LTM Ending</span>
<br>
<span data-bind="text: periodDate, format: 'date'">31/Dec/2016</span>
</th>
<!-- /ko -->
<th class="uncheck" data-bind="visible: $root.series().length > 0" style="display: none;"> </th>
</tr>
</thead>
<tbody>
<!-- ko foreach : dataPoints -->
<tr data-bind="css: { 'odd': ($index() % 2 == 0) }" class="odd">
<td class="checkbox left">
<div class="trigger" data-bind="attr: { 'data-name': property, 'data-group': group }, click: function(data, event) { $root.handleClick($root, data, event); }" data-name="returnAssets" data-group="ratio">
<span class="name" data-bind="text: name">Return on Assets</span>
<span data-bind="visible: $data.hasOwnProperty('glossaryTerm')">
<img src="img/info.png" alt="" data-bind="tooltip: $data.hasOwnProperty('glossaryTerm') ? glossaryTerm : null" tooltip-copy="Return on Assets is a measure of company profitability relative to total assets. It is calculated by dividing tax-effective EBIT (Earnings before Interest and Tax) by Average Total Assets over a 12-months period." class="tooltip-item">
</span>
</div>
<input type="checkbox">
</td>
<!-- ko foreach : $root.dataPoints -->
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="14.6931" data-name="returnAssets">14.693</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="13.5242" data-name="returnAssets">13.524</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="14.5923" data-name="returnAssets">14.592</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="13.0935" data-name="returnAssets">13.094</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="15.4657" data-name="returnAssets">15.466</td>
<!-- /ko -->
<td class="uncheck" data-bind="visible: $root.series().length > 0, click: function(data, event) { $root.handleClick($root, data, event); }" style="display: none;">
<span data-bind="visible: $root.canUncheck($root, property)" style="display: none;">[UNCHART]</span>
</td>
</tr>
<tr data-bind="css: { 'odd': ($index() % 2 == 0) }">
<td class="checkbox left">
<div class="trigger" data-bind="attr: { 'data-name': property, 'data-group': group }, click: function(data, event) { $root.handleClick($root, data, event); }" data-name="returnCapital" data-group="ratio">
<span class="name" data-bind="text: name">Return on Capital</span>
<span data-bind="visible: $data.hasOwnProperty('glossaryTerm')">
<img src="img/info.png" alt="" data-bind="tooltip: $data.hasOwnProperty('glossaryTerm') ? glossaryTerm : null" tooltip-copy="Return on Capital is a measure of company profitability relative to total capitals. It is calculated by dividing tax-effective EBIT (Earnings before Interest and Tax) by Average Total Capital over a 12-months period." class="tooltip-item">
</span>
</div>
<input type="checkbox">
</td>
<!-- ko foreach : $root.dataPoints -->
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="30.0726" data-name="returnCapital">30.073</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="25.6597" data-name="returnCapital">25.66</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="26.4617" data-name="returnCapital">26.462</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="26.0215" data-name="returnCapital">26.021</td>
<td data-bind="text: $data.hasOwnProperty($parent.property) && $data[$parent.property] != null? $data[$parent.property] : '-', formatNonZeroValue: 'number', attr: { 'data-value': $data.hasOwnProperty($parent.property) ? $data[$parent.property] : null, 'data-name': $parent.property }" data-value="27.67" data-name="returnCapital">27.67</td>
<!-- /ko -->
<td class="uncheck" data-bind="visible: $root.series().length > 0, click: function(data, event) { $root.handleClick($root, data, event); }" style="display: none;">
<span data-bind="visible: $root.canUncheck($root, property)" style="display: none;">[UNCHART]</span>
</td>
</tr>
</tbody>
サンプル出力は、テーブルレポートとして
残念なことに、これはXMLではないが、後者はXMLよりもマークアップルールの方が剛性が低く、XMLが失敗すると解析するHTMLである。例えば、 '
'タグは整形式のXMLであるために '
'を自動的に閉じるべきであり、これによってXPath呼び出しが壊れることさえあります。 – Parfait
必要な出力テーブルを得るために他にどのような方法を使用する必要がありますか? –