2011-10-13 40 views
0

我想格式化一個製表符分隔的文本文件,在數據集中有負值。我試圖忽略任何出現負值的數據行。我想僅向輸出文件寫入具有正值的數據行。無論如何要用一個在字符串中尋找「 - 」的狂野角色來做到這一點?如果我可以避開它,我寧願不將列表轉換爲浮動。我可以從列表中刪除負值,同時將列表值保存爲字符串嗎?

下面的代碼(不包括負值的任何提及還):

import sys, os 

    inputFileName = sys.argv[1] 
    outputFileName = os.path.splitext(inputFileName)[0]+"_edited.txt" 

    try: 
     infile = open(inputFileName,'r') 
     outfile = open(outputFileName, 'w') 
     line = infile.readline() 
     outfile.write(line) 
     for line in infile: 
      line = line.strip() 
      lineList = line.split('\t') 
      lineList = [line for line in lineList if line != ''] 
      #print lineList 
      #print len(lineList) 
      if len(lineList) == 9: 
       #print lineList 
      line = '\t'.join(lineList) 
      line = line + '\n' 
      outfile.write(line) 
     infile.close() 
     outfile.close() 
    except IOError: 
     print inputFileName, "does not exist." 

我已經(有幫助)得到的有九根柱子上面的數據文件擺脫任何空值。現在我試圖擺脫任何負值的行。

回答

1

在輸出之前,您可以在腳本中使用正則表達式來抑制任何帶「 - 」的內容。或者將這個腳本的整個輸出輸出爲grep -v「 - 」,並且它應該抑制任何帶有負數的行。

0
has_negative = any(float(n) < 0 for n in re.findall(r'\-?\d+', line))