将多个表从Pandas read_html()导出到csv文件

时间:2018-03-13 20:01:02

标签: python pandas csv

我想出了如何使用pandas read_html()函数来解析HTML文件中的表。但是我在将表格输出到单个csv文件时遇到了麻烦。

这就是我的表格在html中的样子,名为' example.html':

<html>

<body>


<table><tr></tr></table>
<table><tr></tr></table>

sjfasfasjfle
sdfølasjdf
fsdfjkj
fj
klsdjfølas
sdfpøjfjøklsdfasmf

Test1
<table border=1>
<tr>
<td>Trondheim</td><td>3</td><td>6</td><td>8.8</td><td>Test</td>
</tr>
<tr>
<td>4</td><td>7</td><td>8</td><td>88</td><td>Test</td>
</tr>
</table>

sdfjasøf<br>
aklsf<br>
klasdjfasljklj<br>
<p>
asdøfjs<br>
klasøflas<br>
øfsdjf<br><br>
kljøflsdjf<br>
kldfjølasjf<br>
<table><tr></tr></table>

Test2
<table border=1>
<tr>
<td>Norway</td><td>3</td><td>76</td><td>778.8</td><td>Test</td>
</tr>
<tr>
<td>74</td><td>77</td><td>78</td><td>88</td><td>Test</td>
</tr>
<tr>
<td>74</td><td>77</td><td>78</td><td>88</td><td>Test</td><td>74</td><td>77</td><td>78</td><td>88</td><td>Test</td>
</tr>
</table>


Test3
<table border=1><tr>Also</tr></table>

<table border=1><tr></tr></table>

<table border=1><tr></tr></table>

</body>

<html>

这是我解析这些表的代码:

import os
import pandas as pd

htmlname = r"example.html"
html = open(htmlname, 'r')
source_code = html.read()
tables = pd.read_html(source_code)

for i, table in enumerate(tables):
    tables.to_csv('test.csv','a')

我收到错误AttributeError:&#39; list&#39;对象没有属性&#39; to_csv&#39;。

我迷失了如何解决这个问题,我很确定这很容易,但我所有的研究只带我到html文件中有1个表的示例但没有解析多个并将多个写入csv文件。任何帮助表示赞赏。先谢谢你。

1 个答案:

答案 0 :(得分:2)

您正在将tables写入csv而不是table 尝试:

for i, table in enumerate(tables):
    table.to_csv('test{}.csv'.format(i),'a')

另外,你有没有理由使用&#39; a&#39;作为分隔符?