从数据框中的列中删除 html 格式

问题描述 投票:0回答:1

我有一个数据框,我需要删除 html 标签并将数据转换为纯文本。

我发现了以下内容(从字符串中删除 HTML 标签的 Python 代码):

import re
CLEANR = re.complile('<.*?>')
def cleanhtml(raw_html):
    cleantext = re.sub(CLEANR, '', rawhtml)
    return cleartext

我将其应用到我的专栏中,使用:

df['col'] = df['col'].apply(cleanhtml(df['col']))

这导致了错误,因为“col”是对象数据类型,因此我修改了函数以将传递的参数转换为字符串,如下所示:

import re
CLEANR = re.complile('<.*?>')
def cleanhtml(raw_html):
    cleantext = re.sub(CLEANR, '', str(rawhtml))
    return cleartext

代码仍然失败,因为它接收的是对象而不是字符串。错误是:

名称:col,长度:1021,dtype:对象'不是系列'对象的有效函数。

有人可以把我推向正确的方向吗?谢谢。

python dataframe
1个回答
0
投票
import re
import pandas as pd

rawhtml = """<div>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</div>"""

CLEANR = re.compile('<.*?>') 
cleanhtml = lambda rawhtml: re.sub(CLEANR,'', str(rawhtml))
df = pd.DataFrame(data = {"col":[cleanhtml(rawhtml)]})
print(df)

输出:

\nTitle\nA long text........ \n a link \n
© www.soinside.com 2019 - 2024. All rights reserved.