Следующий код возвращает словарь номеров деталей из электронной таблицы и работает как задумано.
import openpyxl, os, pprint, re
wb = openpyxl.load_workbook('RiverbedInventory.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
max_row = sheet.max_row
inventory = {}
for row in range(1,max_row+1):
prodName = sheet['G' + str(row)].value
inventory.setdefault (prodName, {'count': -0})
inventory[prodName] ['count'] += 1
pprint.pprint(inventory)
Я пытаюсь отфильтровать результаты с помощью регулярного выражения, чтобы возвращать только те номера деталей, которые соответствуют определенным критериям (в этом случае детали # начинаются с VCX).Я продолжаю получать сообщения об ошибках «TypeError: ожидаемая строка или байтовоподобный объект».Я немного погуглил, но не могу найти ответ.Вот код регулярного выражения, который я использую:
import openpyxl, os, pprint, re
wb = openpyxl.load_workbook('RiverbedInventory.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
max_row = sheet.max_row
steelhead = re.compile(r'VCX-\d+-\w+')
inventory = {}
for row in range(1,max_row+1):
prodCode = sheet['G' + str(row)].value
inventory.setdefault (prodCode, {'count': -0})
inventory[prodCode]['count'] += 1
pprint.pprint (steelhead.findall(inventory))
рабочий против нерабочего