Python 错误:在位置上没有要重复的内容

Python 错误:在位置上没有要重复的内容,python,regex,debugging,dictionary,Python,Regex,Debugging,Dictionary,我有一个文本文件,其中包含了一系列俚语单词及其替代品。我使用“:”作为拆分点将此文本文件转换为字典,转换后打印字典时,一切似乎都正常 但是,从此行产生的错误:slags\u re=re.compile(“|”).join(slags\u dict.keys())表示在位置112207处无需重复 在尝试调试时,我发现错误以某种方式与字典有关。这是因为当我运行下面的代码时,我没有得到正确的输出,但也没有得到错误。此代码的预期输出为“fitness”,但实际输出为“fitness” 这是字典中的代码(

我有一个文本文件,其中包含了一系列俚语单词及其替代品。我使用“:”作为拆分点将此文本文件转换为字典,转换后打印字典时,一切似乎都正常

但是,从此行产生的错误:
slags\u re=re.compile(“|”).join(slags\u dict.keys())
表示在位置112207处无需重复

在尝试调试时,我发现错误以某种方式与字典有关。这是因为当我运行下面的代码时,我没有得到正确的输出,但也没有得到错误。此代码的预期输出为“fitness”,但实际输出为“fitness”

这是字典中的代码(抱歉,文本文件太大,无法包含在内。提供了一个示例)。预期输出为“适合度”,但实际输出为错误:

import re

test = "fitess"

file = open("slang_conversion.txt","r")

slang_dict = {}

for line in file:
    x = line.split(":")
    a = x[0]
    b = x[1]
    c = len(b) - 1

    b = b[0:c]

    slang_dict[a] = b

slangs_re = re.compile('|'.join(slang_dict.keys())) # <-- error

def correct_slang(s, slang_dict=slang_dict):
    def replace(match):
        return slang_dict[match.group(0)]

    return slangs_re.sub(replace, s)

test = correct_slang(test)

print(test)
重新导入
test=“fites”
文件=打开(“slang_conversion.txt”、“r”)
俚语dict={}
对于文件中的行:
x=行。拆分(“:”)
a=x[0]
b=x[1]
c=len(b)-1
b=b[0:c]
俚语[a]=b
slags_re=re.compile(“|”).join(slags_dict.keys())#我建议替换

slangs_re = re.compile('|'.join(slang_dict.keys()))


slags\u re=re.compile(r)(?如果
slag\u dict.keys()
包含正则表达式元字符(
*
+
等),则需要对其进行转义。很可能,您可以使用
r”来修复它(?此外,
缩略语
应替换为
俚语
。谢谢!但这会导致奇怪的错误。当我输入luv 3 iphone awsm时,显示真棒,soo happy我希望输出是love 3 phone真棒显示真棒,soo happy。然而,这是输出:love 3 phone真棒显示hy awesomeohame,isohoh hatehappy。我查过字典中的问题,但没有。这可能是什么原因?为什么awesomeohame会变成awesomeohame?@MythicCocoa结果是什么?你能通过分享吗?你使用了
(?看起来好像你省略了整个单词检查。是的,我省略了。我会把它发布在pastebin上,请稍候。我没有要求代码,而是要求模式。尝试添加
slang_dict=OrderedDict(排序(slang_dict.iteritems(),key=lambda x:len(x[0]),reverse=True))
创建图案之前。从集合导入订单添加
slangs_re = re.compile('|'.join(slang_dict.keys()))
slangs_re = re.compile(r"(?<!\w)(?:{})(?!\w)".format('|'.join([re.escape(x) for x in slang_dict])))
from collections import OrderedDict
import re

test = "fitess no kome*"

slang_dict = {"Aha aha":"no", "fitess":"fitness", "damm":"damn", "kome*":"come", "ow wow":"rrf"}
slang_dict = OrderedDict(sorted(slang_dict.iteritems(), key=lambda x: len(x[0]), reverse=True))

slangs_re = re.compile(r"(?<!\w)(?:{})(?!\w)".format('|'.join([re.escape(x) for x in slang_dict])))
def correct_slang(s, slang_dict=slang_dict):
    def replace(match):
        return slang_dict[match.group(0)]

    return slangs_re.sub(replace, s)

test = correct_slang(test)
print(test)