У меня есть файл Excel, где каждая ячейка имеет заголовок и его значения (int, строка или ничего), разделенные знаком :. Я хочу сделать словарь, где ключ может быть названием.

Столбец в файле Excel выглядит примерно так:

Procedure: PicProc  #cell 1
Mod: avB            #cell 2
ImageFile: av.jpg   #so on 
Odor: 1
OlfClass: 1
Jitter: 9500
ScaleDur: 4500
OdorList.Cycle: 1
OdorList.Sample: 10
Running: OdorList
FixationBlack.OnsetDelay: 2893
FixationBlack.OnsetTime: 217369
FixationBlack.RESP: 
FixationBlack1.OnsetDelay: 27
FixationBlack1.OnsetTime: 226896
FixationBlack1.RESP: 
FixationYellow.RESP: 
PicPresent.OnsetDelay: 34
PicPresent.OnsetTime: 227547
PicPresent.RESP: 
RatingOnset: 230558

Я хотел бы иметь что-то вроде этого:

{'Procedure': 'PicProc','Mod': 'avB', 'ImageFile': 'av.jpg','Odor': '1'...  }

Как мне это сделать?

0
mevada.ravikumar 26 Июн 2019 в 15:49

3 ответа

Лучший ответ

Предполагая, что ваши данные помещены в первый лист вашей рабочей книги, внутри column A вы можете извлечь данные следующим образом:

import xlrd


wb = xlrd.open_workbook("path/to/file")
sheet = wb.sheet_by_index(0) # First sheet of workbook
arr = sheet.col_values(0) # Column A

print({k:v.strip() for k, v in dict(s.split(':', 1) for s in arr).items()})

< Сильный > Выход

{'Procedure': 'PicProc', 'Mod': 'avB', 'ImageFile': 'av.jpg', 'Odor': '1', 'OlfClass': '1', 'Jitter': '9500', 'ScaleDur': '4500', 'OdorList.Cycle': '1', 'OdorList.Sample': '10', 'Running': 'OdorList', 'FixationBlack.OnsetDelay': '2893', 'FixationBlack.OnsetTime': '217369', 'FixationBlack.RESP': '', 'FixationBlack1.OnsetDelay': '27', 'FixationBlack1.OnsetTime': '226896', 'FixationBlack1.RESP': '', 'FixationYellow.RESP': '', 'PicPresent.OnsetDelay': '34', 'PicPresent.OnsetTime': '227547', 'PicPresent.RESP': '', 'RatingOnset': '230558'}
0
drec4s 26 Июн 2019 в 13:39

enter image description here

Вы можете использовать этот код для доступа к Excel и получения значений. Как вы можете видеть на изображении, вы можете получить первый ряд заголовков, чтобы у вас были: Area; Sotto-area1 и т. Д. И получить вторую, третью и т. Д. Строки для значений. В результате вы получите Area = "Campalto"; Sotto-area1 = "" и т. Д.

# Reading an excel file using Python 
import xlrd 

# Give the location of the file 
loc = ("path of file") 

# To open Workbook 
wb = xlrd.open_workbook(loc) 
sheet = wb.sheet_by_index(0) 

# For row 0 and column 0 
sheet.cell_value(0, 0) //this will return the value of the first cell ... that has position 0,0
0
Synapsis 26 Июн 2019 в 13:20
my_dict = {}
loc = ("path of file")
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)
for i in range(1, sheet.nrows):

    row = sheet.row_values(i)
    my_dict[row[0]] = row[1]

print(my_dict)

Надеюсь, это поможет.

0
Andrea Ebano 26 Июн 2019 в 13:19