我正在尝试使用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