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

时间:2016-08-10 16:38:46

标签: excel python-2.7 xlrd

我的代码打开一个Excel工作簿,并复制工作簿上前四页的前两行。

使用此代码,如果您参考所需的输出,它会生成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

1 个答案:

答案 0 :(得分:1)

试试这个:

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的格式化功能来删除小数或将数字转换为文本。

希望有所帮助。