删除 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('&lt;[^&lt;]+?&gt;', '', 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)

详情

&lt; - 一个 &lt; 字符 [^&lt;&gt;]* - 比&lt;&gt; 尽可能多的零个或多个字符 &gt; - &gt; 字符。

请参阅regex demo。

熊猫输出:

>>> df['overview_copy']
1               Environments subject.
2     property ;markets and exchange;
3                                    
Name: overview_copy, dtype: object
>>> 

【讨论】:

以上是关于删除 pandas 中的 html 标签的主要内容,如果未能解决你的问题,请参考以下文章

pandas 饼图 plot 删除楔形上的标签文本

pandas使用strip函数将dataframe所有数据列名称中的空格(空格回车符制表符)字符删除

用 Pandas 读写网页中的 HTML 表格数据

pandas dataframe缺失值(np.nan)处理:识别缺失情况删除0值填补均值填补中位数填补加缺失标签插值填充详解及实例

删除android中的html标签

Pandas Dataframe 到 HTML 删除索引