2016-10-03 202 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