删除 pandas 中的 html 标签
Posted
技术标签:
【中文标题】删除 pandas 中的 html 标签【英文标题】:Removing html tags in pandas 【发布时间】:2018-02-10 11:17:04 【问题描述】:我在 Python 3.5.1 上使用 pandas 库。如何从字段值中删除 html 标签?这是我的输入和输出:
我的代码返回错误:
import pandas as pd
code=[1,2,3]
overview =['<p>Environments subject.</p>',
'<ul><li> property ;</li></ul><ul><li>markets and exchange;</li></ul>',
'<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">']
# '<p class="SSPBodyText" style="padding: 0cm; text-align: justify;">The subject.</p>']
df= pd.DataFrame(overview,code)
df.columns = ['overview']
df['overview_copy'] = df['overview']
# print(df)
tags_list = ['<p>' ,'</p>' , '<p*>',
'<ul>','</ul>',
'<li>','</li>',
'<br>',
'<strong>','</strong>',
'<span*>','</span>',
'<a href*>','</a>',
'<em>','</em>']
for tag in tags_list:
# df['overview_copy'] = df['overview_copy'].str.replace(tag, '')
df['overview_copy'].replace(to_replace=tag, value='', regex=True, inplace=True)
print(df)
【问题讨论】:
df
的定义抛出如下错误:ValueError: Shape of passed values is (1, 3), indices imply (1, 2)
。
你是对的。我修好了。
【参考方案1】:
喜欢re.sub('<[^<]+?>', '', text)
您可以找到详细答案there。
【讨论】:
df.overview_copy = df.overview_copy.str.replace('', '') # 使用正则表达式去除html标签。【参考方案2】:Pandas 方式是使用Series.str.replace
:
df['overview_copy'] = df['overview_copy'].str.replace(r'<[^<>]*>', '', regex=True)
详情:
<
- 一个 <
字符
[^<>]*
- 比<
和>
尽可能多的零个或多个字符
>
- >
字符。
请参阅regex demo。
熊猫输出:
>>> df['overview_copy']
1 Environments subject.
2 property ;markets and exchange;
3
Name: overview_copy, dtype: object
>>>
【讨论】:
以上是关于删除 pandas 中的 html 标签的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用strip函数将dataframe所有数据列名称中的空格(空格回车符制表符)字符删除
pandas dataframe缺失值(np.nan)处理:识别缺失情况删除0值填补均值填补中位数填补加缺失标签插值填充详解及实例