我有一个字符串:
text1 = 'python...is...fun...'
我想将多个'。'替换为''。'只有当它们在字符串的末尾时,我希望输出为:
python...is...fun.
所以只有一个'。'在字符串的末尾,它将不会被替换
text2 = 'python...is...fun.'
,输出与text2
相同我的正则表达式是这样的:
text = re.sub(r'(.*)\.{2,}$', r'\1.', text)
我想匹配任何字符串然后{2到n}的'。'在字符串的末尾,但输出是:
python...is...fun..
任何想法如何做到这一点? Thx提前!
答案 0 :(得分:2)
您使它变得有点复杂,您可以使用正则表达式\.+$
轻松完成此操作,并将正则表达式模式替换为单个.
字符。
>>> text1 = 'python...is...fun...'
>>> new_text = re.sub(r"\.+$", ".", text1)
>>> 'python...is...fun.'
你可以进一步扩展这个正则表达式来处理只有...
等输入的情况,但主要的概念是没有必要计算.
的数量,就像你做的那样在你的回答中。
答案 1 :(得分:1)
只需查找以三个句点结尾的字符串,并将其替换为一个句点。
import re
x = "foo...bar...quux..."
print(re.sub('\.{2,}$', '.', x))
// foo...bar...quux.
答案 2 :(得分:0)
import re
print(re.sub(r'\.{2,}$', '.', 'I...love...python...'))
就这么简单。请注意,您需要转义.
,否则,它意味着任何一个字符
除了\n
。
答案 3 :(得分:0)
我想将多个'替换为一个'。'只有当他们在 字符串的结尾
对于这种简单的情况,在不导入re
模块的情况下更容易替换,检查最后3个字符的值:
text1 = 'python...is...fun...'
text1 = text1[:-2] if text1[-3:] == '...' else text1
print(text1)
输出:
python...is...fun.