2017-02-15 65 views
1

我有一個字符串,如:正則表達式替換「...」在字符串的結尾

text1 = 'python...is...fun...' 

我想替換多個「是一個」「。只有當他們在字符串的末尾,我想輸出爲:

python...is...fun. 

所以當只有一個'。'在字符串的結尾,那麼它不會被替換

text2 = 'python...is...fun.' 

和輸出是一樣的作爲文本2

我的正則表達式是這樣的:

text = re.sub(r'(.*)\.{2,}$', r'\1.', text) 

,我想匹配任何字符串,然後匹配'。'的{2到n}。在字符串的末尾,但輸出是:

python...is...fun.. 

任何想法如何做到這一點? Thx提前!

回答

2

你正在使它有點複雜,你可以通過使用正則表達式作爲\.+$並用單個.字符替換正則表達式來輕鬆完成。

>>> text1 = 'python...is...fun...' 
>>> new_text = re.sub(r"\.+$", ".", text1) 
>>> 'python...is...fun.' 

您可以進一步擴展這個正則表達式的輸入來處理案件,如...只有等,但主要的概念是沒有必要計數.數量,因爲你在你的答案做了。

0
import re 
print(re.sub(r'\.{2,}$', '.', 'I...love...python...')) 

就這麼簡單。請注意,您需要轉義.,否則,這意味着除\n之外的任何字符 。

0

只要查找以三個句點結尾的字符串,並將其替換爲單個句點即可。

import re 
x = "foo...bar...quux..." 
print(re.sub('\.{2,}$', '.', x)) 
// foo...bar...quux. 
+0

這隻會取代正好三個。 – Brandin

+0

已更新,以單個替換2個或更多個。 – Scovetta

0

我想替換多個 '是一個'。」只有當他們在 字符串

結束對於這種簡單的情況下,更容易替代而不導入re模塊,檢查最後3個字符的值:

text1 = 'python...is...fun...' 
text1 = text1[:-2] if text1[-3:] == '...' else text1 

print(text1) 

輸出:

python...is...fun.