我有一个收件箱,需要删除html标签并将数据转换为纯文本.

我发现了以下内容(Python code to remove HTML tags from a string):

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,dype:对象"不是系列"对象的有效函数.

有人能把我推向正确的方向吗? 谢谢.

推荐答案

import re
import pandas as pd

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

tag_re = re.compile(r'(<!--.*?-->|<[^>]*>)')
clean_html = lambda rawhtml: tag_re.sub('', str(rawhtml))
df = pd.DataFrame({"col":[raw_html, raw_html]})
html_to_text = [clean_html(h) for h in df.col]

df.col = html_to_text
print(df)

输出:

0    \nTitle\nA long text........ \n a link \n
1    \nTitle\nA long text........ \n a link \n
Name: col, dtype: object

Python相关问答推荐

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

根据网格和相机参数渲染深度

在函数内部使用eval(),将函数的输入作为字符串的一部分

如何在图片中找到这个化学测试条?OpenCV精明边缘检测不会绘制边界框

Python 3.12中的通用[T]类方法隐式类型检索

通过优化空间在Python中的饼图中添加标签

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

我从带有langchain的mongoDB中的vector serch获得一个空数组

如何删除索引过go 的lexsort深度可能会影响性能?' &>

图像 pyramid .难以创建所需的合成图像

如何在给定的条件下使numpy数组的计算速度最快?

python中字符串的条件替换

Plotly Dash Creating Interactive Graph下拉列表

使用BeautifulSoup抓取所有链接

如何在Pyplot表中舍入值

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

如何从数据框列中提取特定部分并将该值填充到其他列中?

如何在Pandas中用迭代器求一个序列的平均值?

Groupby并在组内比较单独行上的两个时间戳

如何使用Polars从AWS S3读取镶木地板文件