我有一个数据集,其中包含来自Twitter的推文。他们中的一些人还提到了用户,例如@thisisauser
。我尝试在执行其他清理过程的同时删除该文本。
def clean_text(row, options):
if options['lowercase']:
row = row.lower()
if options['decode_html']:
txt = BeautifulSoup(row, 'lxml')
row = txt.get_text()
if options['remove_url']:
row = row.replace('http\S+|www.\S+', '')
if options['remove_mentions']:
row = row.replace('@[A-Za-z0-9]+', '')
return row
clean_config = {
'remove_url': True,
'remove_mentions': True,
'decode_utf8': True,
'lowercase': True
}
df['tweet'] = df['tweet'].apply(clean_text, args=(clean_config,))
但是,当我运行上面的代码时,所有Twitter提及内容仍在文本中。我使用Regex在线工具验证了Regex是否可以正常工作,所以问题应该出在熊猫的代码上。
答案 0 :(得分:2)
您误用了字符串上的replace
方法,因为它不接受正则表达式,仅接受固定的字符串(有关更多信息,请参见https://docs.python.org/2/library/stdtypes.html#str.replace上的文档)。
满足需求的正确方法是使用re
模块,例如:
import re
re.sub("@[A-Za-z0-9]+","", "@thisisauser text")
' text'
答案 1 :(得分:0)