从.txt文件创build一个列表来写在Excel中

我正在试图从一个.txt文件中的大量数据中创build一个列表。 我想通过excel来处理它们,并且显示我一直在做这个来创build一个迭代列表,这个列表将被写在每一列中。但是我得到的错误是我没有定义j。

import xlwt f=open('inputfile.txt') c=1 for lines in f: #split = f.split('\t') style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') wb=xlwt.Workbook() ws=wb.add_sheet('Database',cell_overwrite_ok=True) for i,row in enumerate(lines): ws.write(i,j,col) print(str(c)) c=c+1 wb.save('Prueba.xls') 

此外,我想问一下,如果有可能从两行.txt创build一个单一的列表?

你还没有定义variablesj和col (而不是你定义的额外的variables行,这里没有使用),你必须定义variables。

  for i,row in enumerate(lines): 

你必须在这里for i,j, col in enumerate(lines):定义j for i,j, col in enumerate(lines):

看起来你最终试图到达这里:

 import xlwt f=open('inputfile.txt') style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') wb=xlwt.Workbook() ws=wb.add_sheet('Database',cell_overwrite_ok=True) c=0 for lines in f: split = f.split('\t') for i,val in enumerate(split): ws.write(i,c,val) c=c+1 wb.save('Prueba.xls') 

这假定ws.write需要一个行索引(并且您要validation),然后是一个列索引,然后是写入该单元格的值。 这段代码将把inputfile.txt中的每行放在一个单独的列中。 如果您希望input文件中的每一行都存在于不同的行中,那么您正在寻找这个解决scheme:

 import xlwt f=open('inputfile.txt') style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') wb=xlwt.Workbook() ws=wb.add_sheet('Database',cell_overwrite_ok=True) row_index=0 for lines in f: split = f.split('\t') for i,val in enumerate(split): ws.write(row_index,i,val) c=c+1 wb.save('Prueba.xls') 

那是因为你确实没有定义j

你也没有定义col

也许你的意思是这样的:

 import xlwt f=open('inputfile.txt') c=1 for lines in f: #split = f.split('\t') style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') wb=xlwt.Workbook() ws=wb.add_sheet('Database',cell_overwrite_ok=True) for i,j in enumerate(lines): # change to define j ws.write(i,j,c) # change to use c instead of col print(str(c)) c=c+1 wb.save('Prueba.xls') 

但是这对我来说仍然没有什么意义,因为我想你正在寻找2D输出。

另一件事是当你遍历一个文件,即为文件for line in file你将迭代通过每一行,所以第二个循环似乎要么被误标或误解。

也许你的意思是:

 import xlwt f=open('inputfile.txt') c=1 style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') wb=xlwt.Workbook() ws=wb.add_sheet('Database',cell_overwrite_ok=True) for row_num,lines in f: for col_num,entry in enumerate(lines.split('\t')): ws.write(row_num,col_num,entry) print(str(c)) c=c+1 wb.save('Prueba.xls') f.close() # Make sure you close your files! 

您还需要确保close文件, file.close()完成后。

我会提出一点改革意见

我的猜测从你的注释部分代码出来,你正在处理一个制表符分隔的文本文件? 在这种情况下,我会推荐以下修订:

 import xlwt with open('inputfile.txt') as f: c=1 wb=xlwt.Workbook() style0=xlwt.easyxf('font:name Times New Roman,colour black,bold on') ws=wb.add_sheet('Database',cell_overwrite_ok=True) for i,line in f: for j,entry in line.split('\t'): ws.write(i,j,entry) # change to use c instead of col print(str(c)) c=c+1 wb.save('Prueba.xls') 

这将使用xlwt创build一个文本标签分隔的转换为excel。

我的更改:

  1. 切换到with open('file','r') as f:语法,更pythonic一点点,并处理closures您提供的代码中缺less的文件。
  2. 将您的初始化组织在循环之外,而不是在循环之内。
  3. 然后遍历行,然后遍历制表符分隔的条目,将它们分别转换为行和列坐标时将值放入Excel文件中。