Python Pandas 数据框:一列包含特殊 HTML 特殊字符,例如和 < 有没有办法删除它们?
Python Pandas Data Frame: One column contains special HTML spcial characters such as & < Is there a way to remove them?
我这里只是举个例子。有没有办法删除所有特殊字符? (例如,不只是显示 "&" and "<"
)
发现这个 https://gist.github.com/codeboy/5487eeb1c551d59e2366 比您要求的要多一些,所以我将其修改为:
import re
def parse_text(text, patterns=None):
"""
modified from above github gist
delete all HTML entities
:param text (str): given text
:param patterns (dict): patterns for re.sub
:return str: final text
"""
base_patterns = {"&[rl]dquo;": "",
"&[rl]squo;": "",
" ": "",
"&": ""}
patterns = patterns or base_patterns
final_text = text
for pattern, repl in patterns.items():
final_text = re.sub(pattern, repl, final_text)
return final_text
你可以这样调用它,分配给一个新列,这样你就可以将结果与原始字符串进行比较:
df["column3"] = df["column2"].apply(parse_text)
请注意,patterns
变量可能不完整,您可能需要根据转义 HTML.
中的内容对其进行扩充
我认为下面的内容只需要通过一次文本就可以工作
re.sub("&[a-zA-Z]+?;","",corpus_of_text)
在数据框中,我认为它只是(我认为...)
cleaned_values = df['column2'].str.replace(re.compile("&[a-zA-Z]+?;"),"")
我这里只是举个例子。有没有办法删除所有特殊字符? (例如,不只是显示 "&" and "<"
)
发现这个 https://gist.github.com/codeboy/5487eeb1c551d59e2366 比您要求的要多一些,所以我将其修改为:
import re
def parse_text(text, patterns=None):
"""
modified from above github gist
delete all HTML entities
:param text (str): given text
:param patterns (dict): patterns for re.sub
:return str: final text
"""
base_patterns = {"&[rl]dquo;": "",
"&[rl]squo;": "",
" ": "",
"&": ""}
patterns = patterns or base_patterns
final_text = text
for pattern, repl in patterns.items():
final_text = re.sub(pattern, repl, final_text)
return final_text
你可以这样调用它,分配给一个新列,这样你就可以将结果与原始字符串进行比较:
df["column3"] = df["column2"].apply(parse_text)
请注意,patterns
变量可能不完整,您可能需要根据转义 HTML.
我认为下面的内容只需要通过一次文本就可以工作
re.sub("&[a-zA-Z]+?;","",corpus_of_text)
在数据框中,我认为它只是(我认为...)
cleaned_values = df['column2'].str.replace(re.compile("&[a-zA-Z]+?;"),"")