我有一个包含HTML的text
列的Pandas DataFrame。我想获得文本,即剥离标签。我尝试按如下方式执行此操作:
from bs4 import BeautifulSoup
result_df['text'] = BeautifulSoup(result_df['text']).get_text()
然而,我最终得到了这个错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我做错了什么?
谢谢!
答案 0 :(得分:6)
试试这个:
from bs4 import BeautifulSoup
result_df['text'] = [BeautifulSoup(text).get_text() for text in result_df['text'] ]
答案 1 :(得分:2)
您也可以使用apply
的方法,但我怀疑它有多大区别。
>>> import pandas as pd
>>> data = {'a': ['<div><span>something</span></div>', '<a href="nowhere.org">erowhon</a>']}
>>> df = pd.DataFrame(data)
>>> df
a
0 <div><span>something</span></div>
1 <a href="nowhere.org">erowhon</a>
>>> import bs4
>>> df['a'] = df['a'].apply(lambda x: bs4.BeautifulSoup(x, 'lxml').get_text())
>>> df
a
0 something
1 erowhon
答案 2 :(得分:0)
df = pd.read_csv("./testlog.tsv", index_col=0,delimiter='\t')
X = df.review
df['review'] = [BeautifulSoup(X).getText() for X in df['review']]
这将从文件测试日志中的列审阅中删除所有HTML标记。