2013-07-05 58 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