2014-02-05 160 views
0

排明智的文本文件在Excel中我有去像一个Excel文件:写入文件使用python

208324_at akp13_human 7  6.9  5.8  5 7  5.7 
208325_s_at akp13_human 25.5 21.3 9.9  9 13.1 8.5 

我一定要找到每个值的日志,并将其写入到另一个文本文件。以下是代码:

import xlrd 
    from xlrd import open_workbook, XL_CELL_TEXT 
    import math 

    filename = "log_values.txt" 
    computed_value = [] 
    i = 0 

    with open_workbook("log10wholetest.xlsx") as f: 
     sheet = f.sheet_by_index(0) 
     n = sheet.nrows 
     for i in range(0, n-1): 
      a = sheet.row_values(i) 
      b = map(float, a) 

      for line in b : 
       log = math.log10(float(line)) 
       computed_value.append(log) 
       i += 1 

      with open(filename, 'w') as g: 
       for value in computed_value : 
        g.write("%s\t" % value) 

这让我有络绎不绝类似的结果的文本文件:

2.55750720191 2.53995384166 2.21827285357 

等。 但我希望将结果打印为行,因为文件的第2行的日志值应该从第二行开始(在结果文件中),依此类推。 如果这是一个非常简单的问题,我很抱歉,但我对python完全陌生。

+0

我很确定你的代码没有按照你的意图格式化。 – sberry

+0

亚..我意识到..谢谢 – RKundra

+0

当我回到atba电脑时,我会回答,但基本上你需要每行创建一个列表,并将该列表追加到你的computer_value列表中。然后,您将迭代每行值,以便它们位于不同的行上。 – sberry

回答

0

你在你们的末日缺少换行符G-同时:

 with open(filename, 'w') as g: 
      for value in computed_value : 
       g.write("%s\t" % value) 
      g.write('\n') 

这将确保在输入的每一行,你在输出g一行。

+0

嗨..谢谢。我试过这个,但它仍然给我输出作为连续值。 – RKundra

+0

再次想到,在Windows/Excel中打开文件时可能需要使用'\ r \ n'。长话短说,除Windows以外的大多数系统都使用'\ n'作为换行符,Windows使用'\ r \ n'。 – MrGumble

+0

不,我正在使用mac .. – RKundra