2016-10-03 533 views
0

替换第3空格一个字符来,而忽略其他空格文本行中我有这样一行文字:与蟒蛇

09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009 

输出应该是这样的:

09-15-16|05:23:44|A:VCOM|09064|Port 4 Device 10400 Remote 1 10401 Link Up RP2009 

它应该用|替换前4个空格并忽略其余。

这是一个简单的代码,我用:

import re 
text = "09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009" 
i = 0 
while i< 3: 
    text = re.sub(' ', '|', text) 
    text = re.sub('  ', '|', text) 
    i +=1 

print text 

我得到这样的输出:

09-15-16|05:23:44|A:VCOM|||||09064|Port|4|Device|10400|Remote|1|10401|Link|Up|RP2009 

回答

0
import re 

print re.sub(r' +','|',text,4) 
2

你不需要正则表达式这一点。只要使用str.splitmaxsplit

>>> s = '09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009' 
>>> *first, last = s.split(maxsplit=4) 
>>> '|'.join(first) + '|' + last 
'09-15-16|05:23:44|A:VCOM|09064|Port 4 Device 10400 Remote 1 10401 Link Up RP2009' 

对于Python 2:

>>> s = '09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009' 
>>> items = s.split(None, 4) 
>>> '|'.join(items[:-1]) + '|' + items[-1] 
'09-15-16|05:23:44|A:VCOM|09064|Port 4 Device 10400 Remote 1 10401 Link Up RP2009' 
+0

感谢您的响应速度快,我得到约分裂功能 第一个,最后= text.split错误(maxsplit = 4) 类型错误:分割()采用无关键字参数 – Alsphere

+0

@Ahmed - 请参阅编辑Python 2友好版本。 – TigerhawkT3

1

也许尝试这样的事:

text = "09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009" 
text = text.replace(" ", "|", 3) 
text = text.replace(" ", "") 
text = text.replace(" ", "|", 1) 
+0

输出:09-15-16 | 05:23:44 | A:VCOM | 09064 | Port 4 Device 10400 Remote 1 10401 Link Up RP2009 –

+0

只需这两行:text = text.replace(“”,“”) text = text.replace(“”,“|”,4) 您提供非常简单的代码,我喜欢它。 – Alsphere

+0

@Ahmed更妙的是,你明白了! –

1

你可以试试这个

*

str = '09-15-16 05:23:44 A:VCOM  09064 Port 4 Device 10400 Remote 1 10401 Link Up RP2009' 
idx=0 
newStr ='' 
for token in str.split(' '): 
    if(token!=''): 
     if(idx <4): 
      newStr=newStr + token+'|' 
      idx+=1 
     else: 
      newStr = newStr + token+' ' 
      idx+=1 

print(newStr) 

期望的输出

09-15-16|05:23:44|A:VCOM|09064|Port 4 Device 10400 Remote 1 10401 Link Up RP2