2015-04-22 24 views
0

我正在使用此功能讀取配置文件。從配置文件中刪除製表符

import numpy as np 

stream = np.genfromtxt(filepath, delimiter = '\n', comments='#', dtype= 'str') 

它工作得很好,但我有一個問題:製表符。

I.e. 輸出

[ '\ tvalue1', '1'] [ '\噸'] [ '值2', '2']

有一種方法來忽略這個特殊字符?

我的解決方法是類似的東西:(它適合我的目的,但它是一個有點「醜」)

result = {} 
for el in stream: 
    row = el.split('=',1) 
    try: 
     if len(row) == 2: 
      row[0] = row[0].replace(' ','').replace('\t','') #clean the elements from not needed spaces 
      row[1] = row[1].replace(' ','').replace('\t','') 
      result[row[0]] = eval(row[1]) 
    except: 
     print >> sys.stderr,"FATAL ERROR: '"+filepath+"' missetted" 
     logging.exception(sys.stderr) 
     sys.exit('') 
+0

文件中是否有任何評論?製表符是否曾出現在相關行中的某個位置?如果兩者都不是,那麼你可以做'comments ='\ t''。 – L3viathan

+0

是的,有很多評論。我需要選項comments ='#' – overcomer

回答

1

工作要沒事更換標籤的感覺:

stream = [x.replace('\t','') for x in stream] 

或者用一個空格替換選項卡,然後刪除重複的空間:

stream = [' '.join(x.replace('\t',' ').split()) for x in stream] 

要刪除空字符串(source):

stream = filter(None, stream) 
+0

當然,但這並不能解決問題。我仍然會有數組中的空元素。在這個例子中,第二個元素。流傳遞給其他函數,空元素導致錯誤。 – overcomer

+0

我添加了另一行來刪除空字符串 – philshem

0

有講解員似乎把使用numpys genfromtext多個分隔符或評論的方式。我會建議尋找其他地方。嘗試https://docs.python.org/2/library/configparser.html。這裏有一個簡單的例子一個鏈接,這樣你可以得到如何與模塊https://wiki.python.org/moin/ConfigParserExamples

+0

我使用configparser以更「標準」的格式讀取其他文件。我決定使用python genfromtext,因爲在某些方面更加靈活。我也沒有章節。無論如何感謝你的線索。 – overcomer