2013-07-05 54 views
0

在文件:替換多個句號

Hello........girlllllllllll 
W.o.W 

我想:

for line in file.split('\n'): 
    line = re.sub('[.]+', ' ', line) 
    line = re.sub('[.]', '', line) 
    print line 

結果表明:

Hello girlllllllllll 
W o W 

是否有可能得到如下結果呢?

Hello girlllllllllll 
WoW 

有什麼建議嗎?

+0

那麼你想要的是去除和獨立的點,並用空間替換多個點? –

+3

空間和空間的條件是什麼? – matino

+0

可以肯定的是,你試圖對每一行應用不同的「規則」,不是嗎? –

回答

3

使用此:

for line in file.split('\n'): 
    # Replace multiple dots with space 
    line = re.sub('\.\.+', ' ', line) 
    # Remove single dots 
    line = re.sub('\.', '', line) 
    print line 
2

嘗試這些:

line = re.sub('\.(?!\.)', '', line) 
line = re.sub('\.+', ' ', line) 
  1. 替換什麼點,未後跟一個點。
  2. 用空格替換多個點的出現。
2
line = re.sub(r'\.{2,}', ' ', line) 
line = re.sub(r'\.{1}', '', line) 
+2

這實際上會去掉一些字符。 –

+0

你是對的,現在編輯 – matino

3
x = file.read() 
print re.sub(r'\.\.+', ' ', x).replace('.', '') 
1

如果我深知你的問題,你想有一個空間,但一個點用一個空字符串替換替換多個點。

您應該簡單地將第一條規則從[.]+更改爲[.]{2,}。通過這種方式,規則只有在找到兩個或更多個點時纔會匹配,而使單個點由第二個規則管理。

for line in file.split('\n'): 
    line = re.sub('[.]{2,}', ' ', line) 
    line = re.sub('[.]', '', line) 
    print line