最近做一个NLP项目,涉及到字符串处理。
需求
把一些英语表达缩写替换成全称,例如pls替换please,BTW替换为by the way。
需要注意的点
只能替换独立的单词,不能把单词间的字母误替换为全称。例如某个单词含有pls,plsgiocephalic,这种情况下应该保留原单词,而非替换成pleasegiocephalic。此时就需要进行python的边界匹配
解决方法
边界匹配采用\b ,写在哪边就是匹配哪边的边界,例如
import re
def replaceAcronyms(s):
findAcro = re.compile(r"\btxs",re.I)
s = re.sub(findAcro,"thanks",s)
return s
test = "aaTXSbb,txsbb,TXS"
print(replaceAcronyms(test))
output: aaTXSbb,thanksbb,thanks
import re
def replaceAcronyms(s):
findAcro = re.compile(r"txs\b",re.I)
s = re.sub(findAcro,"thanks",s)
return s
test = "aaTXSbb,aatxs,TXS"
print(replaceAcronyms(test))
output: aaTXSbb,aathanks,thanks
import re
def replaceAcronyms(s):
findAcro = re.compile(r"\btxs\b",re.I)
s = re.sub(findAcro,"thanks",s)
return s
test = "aaTXSbb,txs,TXS"
print(replaceAcronyms(test))
output: aaTXSbb,thanks,thanks
*** 注意 *** 如果匹配左右边界失效,可以采用以下写法
str = "your str"
findAcro = re.compile(r"\b%s\b"%str,re.I)
|