使用Python替换文本中的缩写,而不更改空白



我正在尝试使用Python替换文本中的缩写,而不改变包括空格在内的句子结构。

我创建了一个包含缩写和替换词的数据字典;

replacers = {
'aaa': 'abdominal aortic aneurysm',
'taa' : 'thoracic aortic aneurysm',
'clti': 'chronic limb threatening ischaemia',

我的文本来自一个名为"注释"的文本区域。

if request. Method == "POST":
text = request.POST.get("note")

我创建了这个函数来删除缩写。

# remove abbreviations function
def acronym(replacers, text):
return ' '.join([replacers.get(i, i) for i in text.split()])

它运行良好,但删除了所有新行和制表符,使文本难以阅读。有没有一种优雅的方式来写上面的函数?

非常感谢。

您可以通过多种方式实现这一点>最简单的是:

# remove abbreviations function
def acronym(replacers, text):
for rk in replacers.keys():
text = text.replace(rk, replacers[rk])
return text

使用正则表达式有助于确保";完美的";匹配:

# remove abbreviations function
def acronym(replacers, text):
for rk in replacers.keys():
text = re.sub(r"(^|s)("+ str(rk) + ")($|s)", r"1" + str(replacers[rk]) + r"3", text)
return text

注意:上面的regex确保关键字具有前导(新行(或(空白字符(和尾部(行尾(或(空格字符(。这无论如何都可以改进:(

我发现使用正则表达式适用于这种情况。

# remove abbreviations function
def acronym(replacers, text):
for i, x in replacers.items():
text = re.sub(rf'b{i}b', x, text)
return text

最新更新