为什么这会在第二列中给我一个浮点值并创建两行?

Why is this giving me a float value in the second column and creating two rows?

我的代码打开一个 excel 工作簿并复制工作簿前 4 个工作表的前两行。

使用此代码,如果您引用所需的输出,它会生成 5 个不同的列,我希望它是 2 个不同的列。

我不明白的另一件事是为什么第 3 列和第 4 列是浮点数。为什么它会变成浮点数?

我试图提出一个更好的问题,因为我的其他问题没有得到很好的接受,所以如果您有任何反馈也有帮助。

workbook = xlrd.open_workbook('input.xlsx')

    data = []

    for i in range (0,5):
        sheet = workbook.sheet_by_index(i)
        data.append([sheet.cell_value(row, 0) for row in range(sheet.nrows)])
        data.append([sheet.cell_value(row, 1) for row in range(sheet.nrows)])


    transposed = zip(*data)
    with open('file.txt','w') as fou:
        writer = csv.writer(fou, delimiter='\t')
        for row in transposed:
            writer.writerow(row)

输出:

F800    00      F8C8    32.0    
F804    01      F8CC    33.0
F808    02      F8D0    34.0    
F80C    03      F8D4    35.0
F810    04      F8D8    36.0    
F814    05      F8DC    37.0
F818    06      F8E0    38.0    

期望输出:

F800    00          
F804    01      
F808    02      
F80C    03      
F810    04        
F814    05      
F818    06            
F81C    07          
F8C8    32 
F8CC    33
F8D0    34   
F8D4    35
F8D8    36  
F8DC    37
F8E0    38

试试这个:

data = [[], []]

for i in range (0,5):
    sheet = workbook.sheet_by_index(i)
    data[0].extend([sheet.cell_value(row, 0) for row in range(sheet.nrows)])
    data[1].extend([sheet.cell_value(row, 1) for row in range(sheet.nrows)])


transposed = zip(*data)
with open('file.txt','w') as fou:
    writer = csv.writer(fou, delimiter='\t')
    for row in transposed:
        writer.writerow(row)

data 已初始化为包含 2 个空列表。这些列表在 for 循环中被 扩展 。这应该为您提供正确数量的输出列。

对于浮点值问题,Excel 将数字数据存储为浮点数(无整数)。因此,在导出之前,您可能需要使用 Excel 的格式设置功能来去除小数点或将数字转换为文本。

希望对您有所帮助。