我正在尝试从.txt文件中的大量数据创建列表。 我想通过excel来显示它们并显示我一直在这样做来创建一个迭代列表,它将写在每一列中。但是我得到的错误是我没有定义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的两行创建一个列表?
答案 0 :(得分:0)
您尚未定义变量 j和col (而是定义了此处未使用的额外变量行),您必须定义变量。
for i,row in enumerate(lines):
你必须在这里定义j for i,j, col in enumerate(lines):
答案 1 :(得分:0)
那是因为你确实没有定义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
创建一个文本制表符分隔转换为Excel。
我的更改:
with open('file','r') as f:
语法,多一点pythonic并处理关闭您提供的代码中缺少的文件。答案 2 :(得分:0)
看起来你最终试图到达这里:
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需要一个行索引( 想要验证它),后跟一个列索引,后跟要写入该单元格的值。此代码将inputfile.txt中的每一行放在一个单独的列中。如果您希望输入文件中的每一行都存在于不同的行中,那么您正在寻找此解决方案:
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')