Как извлечь значения из таблицы Excel, где несколько строк отформатированы как числа, но мало текста в Python - PullRequest
1 голос
/ 31 октября 2019

У меня есть лист Excel, где некоторые строки отформатированы как number, но некоторые строки отформатированы как text. У меня есть скрипт Python, который читает каждую строку и конвертировать его в JSON и обрабатывать его. Лист Excel выглядит следующим образом:

enter image description here

На изображении выше мы видим, что значения в строке 98, 99, 100, 101, 102, столбец 1форматируются как текст, но значения в строке 103, 104 столбца 1 форматируются как числа. У меня есть ниже код Python для доступа к нему:

import xlrd
wb = xlrd.open_workbook("file.xlsx")

sheet = wb.sheet_by_index(4)

for i in range(4, 185): #from 5th row to 186th row
    data = dict()
    print(str(sheet.cell_value(i, 0)))
    data['ProductNumber'] = str(sheet.cell_value(i, 0))

Я должен сохранить значения в str, и поэтому я использовал str. Но я получаю результаты ниже для строк с 98 по 104

ROW     Value Extracted
98          907
99          088
100         019
101         274
102         905
103         290.0
104         971.0

Выше результаты выглядят хорошо для строк с 98 по 102, но для строк 103, 104 это неправильно. Это должно быть только 290 & 971. Чтобы сделать это, я поставил int перед str, как показано ниже:

str(int(sheet.cell_value(i, 0)))

Теперь, используя это выше, результаты выглядят следующим образом:

ROW     Value Extracted
98          907
99          88
100         19
101         274
102         905
103         290
104         971

Это снова неверно, потому что значениядля строк 99 и 100 должно быть 088 & 019, а не 88 & 19. Как я могу решить эту проблему. Могу ли я использовать какую-нибудь проверку, которая поможет мне решить это? Я использую xlrd модуль Python.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

для вашего примера набора данных, это будет работать:

str(int(sheet.cell_value(i,0))).zfill(3)
0 голосов
/ 01 ноября 2019

Использование pandas - это еще один вариант, используйте приведенный ниже код для преобразования. Переменная strJson содержит здесь полную строку Json, если вы добавите десятичные точки к своим данным, они автоматически примут ее, и если десятичных значений не будет, то то же самое будет добавлено в json.

import pandas
strDataDump=pandas.read_excel('C:\Temp\Python Projects\data.xlsx', sheet_name='Sheet1')
strJson = strDataDump.to_json()
print('JSON Result:\n', strJson)
...