2017-09-14 39 views
1

我試圖從文件中獲取數據,但數據未能正常傳輸,因爲沒有。的空間在不同的地方是不同的。刪除文件行數據中的空間

例如:文件具有以下給定數據。這裏的每一個字都有一個以上的空間(請注意,這不是字符串,它的文件數據,並使用readlines() IM)

08:30:34 Lane 2 Typ 1 Prt 1 Tid  2 Amt  4.99 Mode 0 Tndr 1 Oper  130 Tran  74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 

我想輸出是這樣的:

08:30:34 Lane 2 Typ 1 Prt 1 Tid 2 Amt 4.99 Mode 0 Tndr 1 Oper 130 Tran 74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1. 

感謝

+1

[用單個空格替換所有multispaces]的可能的複製(HTTPS:/ /stackoverflow.com/questions/27022052/replacing-all-multispaces-with-single-spaces) – tk421

回答

2

你可以使用正則表達式:

>>> s="08:30:34 Lane 2 Typ 1 Prt 1 Tid  2 Amt  4.99 Mode 0 Tndr 1 Oper  130 Tran  74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 " 
>>> import re 
>>> re.sub(' +',' ',s) 
'08:30:34 Lane 2 Typ 1 Prt 1 Tid 2 Amt 4.99 Mode 0 Tndr 1 Oper 130 Tran 74 ID 53062261 Log Dt 2014/08/05 Log Tm 08:30:34 LaneType 1 HasPrinter 1 ' 

所以如果你想保留一個列表readlines()

>>> f = open('yourfile.txt','r') 
>>> result=[re.sub(' +',' ',i) for i in f.readlines()] 
+0

謝謝你的回覆,我是新的python,我試過這個,但它只適用於字符串。我使用下面的代碼 f =打開(sys.argv [1],'r') lines = f.readlines() f.close() 數據寫入文件,我正在閱讀該文件,我想要從文件中刪除額外的空間..在每行 –

+0

'readlines()'返回你的文件的每一行的列表,你可以遍歷列表並應用正則表達式的方法(見編輯) – Dadep

+0

謝謝Dadep其工作 –

0

試試這個:

s = 'aaa bb ccccc d f ggggg' 
s = ' '.join(s.split()) 

如果從一個文件readline()閱讀:

with open('bar.txt', 'r') as f: 
    while True: 
     s = f.readline() 
     s = ' '.join(s.split()) 
     if not s: 
      break 
     print(s) 
+0

謝謝你的回覆,我是新的python,我嘗試過,但它只適用於字符串。我使用下面的代碼 f =打開(sys.argv [1],'r') lines = f.readlines() f.close() 數據寫入文件,我正在閱讀該文件,我想要從文件中刪除多餘的空間..在每一行.. –

+0

檢查我編輯的答案。 – prometeu