有谁知道如何替换长度超过 X 位的单词的最后 N 个字母? 我正在使用此代码
text = re.sub("[A-ZÀ-ÖØ-Ýà-öø-ÿa-z][A-ZÀ-ÖØ-Ýà-öø-ÿa-z]{7,}", "[\g<0>]", text)
这是我现在得到的输出字符串示例。
253. Ficam [revogadas] a Lei nº 1.711, de 28 de outubro de 1952, e [respectiva] [legislação] [complementar], bem como as demais [disposições] em [contrário].
它会在大于 7 个字母的单词周围添加 []。 但是,我只需要包装最后一个字母,而不是整个单词。有谁知道如何实现这一目标? 这是我的预期输出:
253. Ficam revogada[s] a Lei nº 1.711, de 28 de outubro de 1952, e respectiv[a] legislaçã[o] complement[r], bem como as demais disposiçõe[s] em contrári[o].
最佳答案
您可以使用此正则表达式进行搜索:
(\b\w{6,})(\w)
并使用:\1[\2]
进行替换。
代码:
import re
text = '253. Ficam revogadas a Lei nº 1.711, de 28 de outubro de 1952, e respectiva legislação complementar, bem como as demais disposições em contrário.'
print (re.sub(r'(\b\w{6,})(\w)', r'\1[\2]', text))
输出:
253. Ficam revogada[s] a Lei nº 1.711, de 28 de outubr[o] de 1952, e respectiv[a] legislaçã[o] complementa[r], bem como as demais disposiçõe[s] em contrári[o].
正则表达式详细信息:
(\b\w{6,})
:匹配捕获组 #1 中后跟 6 个以上单词字符的单词边界(\w)
:匹配捕获组 #2 中的最后一个单词\1[\2]
:替换为将第一个捕获组置于[.]
中,后跟最后一个单词
关于python - 有没有办法替换长度超过X位的单词的最后N个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72833762/