我有一个问题for
跳过第一行的循环。我知道为什么,但我不知道如何解决。当我将其更改为while
循环,或者事实上任何东西,它给了我一个错误:
line 29, in <module>
worksheet.write(row, col, float(b))
ValueError: could not convert string to float:
代码是:
import xlsxwriter
import tkinter
file_list = []
x = 1
while x <= 30:
file_list.append('AuF7_PATP 10_5M_MgF2_20µl_1s_S' + str(x) + '_calibrated.txt')
x+=1
workbook = xlsxwriter.Workbook(file_list[0]+'.xlsx')
worksheet = workbook.add_worksheet()
row = 1
col = 0
f = open(file_list[0], 'r')
for line in f:
a = f.readline()
b = a[0:(a.rfind("\t"))]
c = a[(a.rfind("\t")):-1]
worksheet.write(row, col, float(b))
worksheet.write(row, col + 1, float(c))
row += 1
循环遍历文件already读取行。你不需要也不应该打电话f.readline()
再次。您已经输入了该行line
,所以就用它吧。
此外,您似乎有制表符分隔的数据;考虑使用csv module https://docs.python.org/2/library/csv.html分割行;它还可以为您将数据转换为浮点数:
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONNUMERIC)
for row, (b, c) in enumerate(reader, 1):
worksheet.write(row, 0, b)
worksheet.write(row, 1, c)
以上用途enumerate()
也为每个数据行提供一个计数器。这csv.QUOTE_NONNUMERIC
引用选项会导致输入文件中不在引号中的任何内容自动转换为float
对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)