readline 跳过 for 循环中的第一行

2023-12-19

我有一个问题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(使用前将#替换为@)

readline 跳过 for 循环中的第一行 的相关文章

随机推荐