操纵HTML文件中的数据

时间:2013-09-12 18:37:28

标签: python html

我正在使用python,我有一个HTML文件,其中包含一个包含样本名称,基因名称以及实验中病例和控件数量的表格。像这样......

Sample    Gene     Cases,Controls
snow      NGF       1,2
sun       NGF       2,3
sun       NGF       1,0
snow      NGF       1,3

我需要将案例和控件分成2个单独的列,然后还添加用于更正案例和更正控件的列。因此,如果样本是雪,则案例数必须乘以0.8,如果样本是太阳,则控件数必须乘以1.5。我不确定如何识别行中的案例和控件,然后将案例和控件分配给不同的变量,以便我可以操作它们。

1 个答案:

答案 0 :(得分:1)

为此尝试pandas库。确保也安装lxml。

首先,让我们假装这是你的HTML:

<table>
<tr><th>Sample</th><th>Gene</th><th>Cases,Controls</th></tr>
<tr><td>snow</td><td>NGF</td><td>1,2</td></tr>
<tr><td>sun</td><td>NGF</td><td>2,3</td></tr>
<tr><td>sun</td><td>NGF</td><td>1,0</td></tr>
<tr><td>snow</td><td>NGF</td><td>1,3</td></tr>
</table>

我还假设您将其读入名为html的变量。

import pandas
tables = pandas.io.html.read_html(html,header=0,infer_types=False)

# Pandas reads each table read from the HTML into a list,
# we only have one here
table = tables[0]

这使你的桌子成了DataFrame

panda dataframe

你现在可以操作,熊猫风格!特别是,您可能想要提取案例和控件。

# Break out those cases and controls into a DataFrame
case_control_list = table["Cases,Controls"].str.split(',',1).tolist(),
case_control = pandas.DataFrame(case_control_list, columns = ["Cases", "Controls"])

case control pandas