Python 单独使用时更换商标符号(™;)
我正在尝试删除商标符号(™) 但只有在这种情况下,它后面没有任何其他符号,例如,我可能有“欧元”™ 这是引号(')的错误编码,所以我不想删除商标符号(™) 所以我用这个模式来代替xx™ 带引号Python 单独使用时更换商标符号(™;),python,regex,Python,Regex,我正在尝试删除商标符号(™) 但只有在这种情况下,它后面没有任何其他符号,例如,我可能有“欧元”™ 这是引号(')的错误编码,所以我不想删除商标符号(™) 所以我用这个模式来代替xx™ 带引号 dict = {}; chars = { '\xe2\x84\xa2': '', # ™ '\xe2\x80\x99': "'", # ’ } def stats_change(char, number): if dict.has_key(char):
dict = {};
chars = {
'\xe2\x84\xa2': '', # ™
'\xe2\x80\x99': "'", # ’
}
def stats_change(char, number):
if dict.has_key(char):
dict[char] = dict[char]+number
else:
dict[char] = number # Add new entry
def replace_chars(match):
char = match.group(0)
stats_change(char,1)
return chars[char]
i, nmatches = re.subn("(\\" + '|\\'.join(chars.keys()) + ")", replace_chars, i)
count_matches += nmatches
输入:foo™ oof
输出:
fooof
输入:o€™f oof
输出:
o'f oof
有什么建议吗?在运行正则表达式之前执行“修复编码问题”以删除TM,这样问题就不会发生。否则,您需要检查TM可能导致正则表达式变长的编码错误的所有可能方式。您可能需要
re.sub(r'™\b |\b™', '', s)
您可能会发现ftfy很有用:在运行regex删除TM之前执行“修复编码问题”,问题就不会发生。否则,您需要检查TM可能出现编码错误的所有可能方式,这可能会导致regex变长。您可能需要re.sub(r'™\b |\b™', '', s)
您可能会发现ftfy很有用: