Построчное чтение данных в Python с использованием openpyxl - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь получить список в python в формате [[a, b], [c, d], ...]

В качестве примера, для двух столбцов ниже в excel:

     R1   R2
     1    2
     6    2
     0    9
     3    2
     4    1
     5    6

Я должен получить список = [[1,2], [6,2], [0, 9], [3,2], [4,1], [ 5,6]]

Код, который у меня есть, показан ниже:

    R = []
    # iterate over column
    for col in range(min_column+3, max_column+1): #location of the data
    # u_need reads in the resource needed for each activity
      u_need = []
      # iterate over row
      for row in range(2, max_row+1): #row 1 is not included
         # loop until blank space is encountered
         if (sheet.cell(row,col).value is not None):
             u_need.append(sheet.cell(row,col).value);

      R.append(u_need)

    print(f'R = {R}')

, но результат дает мне что-то вроде этого:

    R = [[1, 6, 0, 3, 4, 5], [2, 2, 9, 2, 1, 6]]

Есть ли способ Я мог бы это изменить? Любая помощь будет оценена по достоинству! Спасибо!

1 Ответ

1 голос
/ 30 мая 2020

Я использую пакет xlrd для чтения листов Excel

import xlrd 

# my own excel sheet location which contains your data  
loc = "a.xlsx"

# opening workbook 
wb = xlrd.open_workbook(loc) 
# selecting the first worksheet
sheet = wb.sheet_by_index(0) 
lst = []
# not including the first row
for i in range(1,sheet.nrows):
    dummy = []
    for j in range(sheet.ncols):
        # appending the columns with the same row to dummy list
        dummy.append(sheet.cell_value(i, j))
    # appending the dummy list to the main list
    lst.append(dummy)
print(f"lst = {lst}") # output  lst = [[1.0, 2.0], [6.0, 2.0], [0.0, 9.0], [3.0, 2.0], [4.0, 1.0], [5.0, 6.0]]
...