2016-06-09 58 views
4

問題:我似乎無法解析文本文件中的信息,因爲python將其讀取爲完整的字符串而不是單獨的單獨字符串。每個變量之間的空格不是\ t,因此它不會分開。有沒有辦法讓python靈活地刪除空格並改爲逗號或\ t?如何在閱讀文本文件時刪除多個空格

例DATA:

MOR125-1 MOR129-1 0.587 
MOR125-1 MOR129-3 0.598 
MOR129-1 MOR129-3 0.115 

我使用的代碼:

with open("Distance_Data_No_Bootstrap_RAW.txt","rb") as f: 
reader = csv.reader(f,delimiter="\t") 
d=list(reader) 
for i in range(3): 
    print d[i] 

輸出: ['MOR125-1 MOR129-1 0.587'] ['MOR125-1 MOR129-3 0.598'] ['MOR129-1 MOR129-3 0.115']

所需的輸出:

['MOR125-1', 'MOR129-1', '0.587'] 
['MOR125-1', 'MOR129-3', '0.598'] 
['MOR129-1', 'MOR129-3', '0.115'] 
+2

更改分隔空間,並通過使用.strip()字符串方法 –

+0

如果我改變分隔空間擺脫任何多餘的空格中,存在的字符串中的所有單個空格變成逗號。在這一點上,它是一個由逗號分隔的字符串和空格的列表。如果不是完整列表,我不知道如何執行.strip()以刪除空格 – UberKoolMan

回答

7

您可以簡單地將分隔符聲明爲空格,並要求csv在分隔符後跳過初始空格。這樣,您的分隔符實際上是正則表達式' +',即一個或多個空格。

rd = csv.reader(fd, delimiter=' ', skipinitialspace=True) 
for row in rd: 
    print row 
['MOR125-1', 'MOR129-1', '0.587'] 
['MOR125-1', 'MOR129-3', '0.598'] 
['MOR129-1', 'MOR129-3', '0.115'] 
2

您可以指示csv.reader使用空間分隔符,並跳過所有的額外空間:

reader = csv.reader(f, delimiter=" ", skipinitialspace=True) 

有關詳細信息有關可用參數檢查Python docs

Dialect.delimiter 用於將一個字符串分開的領域。它默認爲','。 Dialect.skipinitialspace 如果爲True,則忽略緊接分隔符後面的空格。默認值是False。