我有一个如下所示的列表,我需要以excel或csv格式将其转换为多行
<tr>
<th>Name</th>
<th>Address1</th>
<th>City</th>
<th>State</th>
<th>Zip</th>
</tr>
<tr>
<th>John</th>
<th>111 Michigan</th>
<th>Chicago </th>
<th>IL</th>
<th>60661</th>
</tr>
期望的结果:
Name Address1 City State Zip
John 111 Michigan Chicago IL 60661
答案 0 :(得分:0)
使用Beautiful Soup解析HTML,并为每一行打印列值。
答案 1 :(得分:0)
我尝试过使用beautifulSoup4,但我只能得到第一行作为结果。如果行变为空白
,则为其余部分from bs4 import BeautifulSoup
soup = BeautifulSoup(open("CofATX.txt"))
table = soup.find('table')
rows = table.findAll('tr')
for tr in rows:
cols = tr.findAll('th')
for th in cols:
text = ''.join(th.text.strip())
print text + "|",
print
我得到的结果是 名称|地址1 |城市|国家|压缩 如果行是空白的其余部分
答案 2 :(得分:0)
我可能会使用pandas库。您可以将表格转换为DataFrame
(有点像Excel表格),但我们必须添加<table>
标记,因为文字中缺少这些标记:
import pandas as pd
with open("name.html") as fp:
text = fp.read()
df = pd.read_html("<table>" + text + "</table>", infer_types=False)[0]
给了我们
>>> df
0 1 2 3 4
0 Name Address1 City State Zip
1 John 111 Michigan Chicago IL 60661
我们可以保存为csv
文件:
>>> df.to_csv("out.csv", sep="|", index=False, header=False)
给
Name|Address1|City|State|Zip
John|111 Michigan|Chicago|IL|60661
或直接保存为Excel文件:
>>> df.to_excel("out.xlsx")
pandas
是数据管理的首选工具。