Как получить доступ к части элемента из списка?

#python #excel #list #data-science #scrape

#python #excel #Список #наука о данных #очистить

Вопрос:

 import cv2
import os
import glob
import pandas as pd
from pylibdmtx import pylibdmtx
import xlsxwriter


# co de for scanning

img_dir = "C:\images" # Enter Directory of all images
data_path = os.path.join(img_dir,'*g')
files = glob.glob(data_path)
data = []
result=[]

for f1 in files:
    img = cv2.imread(f1,cv2.IMREAD_UNCHANGED)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    msg = pylibdmtx.decode(thresh)
    print(msg)
    data.append(img)
    result.append(msg)

print(type(result[0]))
  

У меня есть список lsit из 4 внутри результата lists names.Результатом приведенного выше кода является результат. Код предназначен для чтения штрих-кода, но он также предоставляет местоположение, которое мне не требуется .

ИТАК, после приведенного выше кода у меня есть результат с именем result , который выдает мне ::

 [[Decoded(data=b'AZ:HP7CXNGSUFEPZCO4GS5RQPY6XY', rect=Rect(left=37, top=152, width=94, height=97))], [Decoded(data=b'AZ:RCHKBW5WGZE98J7E9853OW4ZHE', rect=Rect(left=40, top=125, width=91, height=95))], [Decoded(data=b'AZ:5Z7HME1FRNAZFINDPTDAOTB9GQ', rect=Rect(left=27, top=112, width=88, height=88))]
  

итак, ТЕПЕРЬ я хочу просто извлечь или найти az aprt из всех отдельных списков и экспортировать его в Excel.

 AZ:HP7CXNGSUFEPZCO4GS5RQPY6XY
AZ:RCHKBW5WGZE98J7E9853OW4ZHE
AZ:5Z7HME1FRNAZFINDPTDAOTB9GQ
  

Я хочу только вышеуказанный вывод и опускаю все сведения о местоположении.

Я пробовал с индексацией, но он говорит, что списки вне диапазона.

Пожалуйста, помогите мне.

Комментарии:

1. Что вы пробовали? Что это за объект внутри списка, это ваш класс?

2. На самом деле это результаты после сканирования некоторых кодов, теперь мне нужна только часть результата, а не местоположение или что-то еще, я хочу только часть AZ из всех 4 списков и экспортировать ее в Excel

3. Я понимаю, но каков тип объекта внутри списка? Не могли бы вы, пожалуйста, поделиться print(type(mylist[0])) и кодом, который создал список, если он у вас есть. Нам нужно понять, какой тип элемента находится внутри списка, чтобы понять, как получить доступ к его свойствам

4. печать(тип(результат[0])) <класс ‘список’>

5. Не размещайте ссылки на сторонний код (который в конечном итоге может исчезнуть).

Ответ №1:

Вам нужно выполнить итерацию по списку и получить правильные свойства для каждого.

 values = [[Decoded(data=b'AZ:HP7CXNGSUFEPZCO4GS5RQPY6XY', rect=Rect(left=37, top=152, width=94, height=97))],
          [Decoded(data=b'AZ:9475EFWZCNARPEJEZEMXDFHIBI', rect=Rect(left=32, top=191, width=90, height=88))],
          [Decoded(data=b'AZ:6ECWZUQGEJCR5EZXDH9URCN53M', rect=Rect(left=48, top=183, width=88, height=89))],
          [Decoded(data=b'AZ:XZ9P6KTDGREM5KIXUO9IHCTKAQ', rect=Rect(left=73, top=121, width=91, height=94))]]

datas = [value[0].data for value in values]          # list of encoded string (b'')
datas = [value[0].data.decode() for value in values] # list of strings
  

Комментарии:

1. ЭТО не работает, трассировка (последний последний вызов): файл «<input>», строка 1, в <module> Файл «<input>», строка 1, в <listcomp> Ошибка атрибута: объект ‘list’ не имеет атрибута ‘data’ ошибка получения

2. @KriteshLunawat итак, у вас есть список из 4 элементов, и каждый элемент представляет собой список из одного элемента ? Попробуйте новый код

3. Я вставил код сюда, пожалуйста, помогите мне сейчас, я попробовал то, что вы предложили выше, но трассировка (последний последний вызов): файл «<input>», строка 1, в <module> Файл «<input>», строка 1, в <listcomp> Ошибка атрибута: у объекта ‘list’ нет атрибута ‘data’ ошибка

4. @KriteshLunawat я не понимаю. Поделитесь точно выводом print(результат)

5. Я отредактировал вопрос, надеюсь, теперь вы в состоянии понять