Разбор элементов из именованного списка в Python - PullRequest
0 голосов
/ 10 сентября 2018

Я получаю именованный список как вывод из программы Python.

[{'path': u'/home/mycomp/Documents/folder1/906350_16379886.JPG', 'score': 7.937254, 'dist': 0.0, 'id': u'AWW3yZOubIicFyUL0_lv', 'metadata': None}, {'path': u'/home/mycomp/Documents/folder1/907675_16389607.JPG', 'score': 0.5119519, 'dist': 0.2922064602034243, 'id': u'AWW3bhtybIicFyUL0uVN', 'metadata': None}]

Длина вывода в этом случае равна 2, и я не могу контролировать длину вывода.Я хочу получить только имя файла из напечатанного пути.Я понимаю, что могу использовать

os.path.basename(path)

, чтобы получить имя файла.Однако, когда я попытался получить путь из списка, используя следующий код:

for (i, imagePath) in enumerate(imagePaths):
    a=ses.search_image(imagePath)
    for k,v in enumerate(a):
        print(v)    

imagePath = предоставляет путь к изображению

a=ses.search_image(imagePath) = ищет похожее изображение исохраняет все соответствующие параметры изображения для изображения в пути к.Это вывод а, что я дал выше.

for k,v in enumerate(a):
     print(v)

на самом деле печатает каждый список в виде отдельной строки, например:

{'path': u'/home/mycomp/Documents/folder1/906350_16379886.JPG', 'score': 7.937254, 'dist': 0.0, 'id': u'AWW3yZOubIicFyUL0_lv', 'metadata': None}
{'path': u'/home/mycompDocuments/folder1/907675_16389607.JPG', 'score': 0.5119519, 'dist': 0.2922064602034243, 'id': u'AWW3bhtybIicFyUL0uVN', 'metadata': None}

Желаемый вывод:

906350_16379886.JPG
907675_16389607.JPG

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

без импорта os:

lst = [{'path': u'/home/mycomp/Documents/folder1/906350_16379886.JPG', 'score': 7.937254, 'dist': 0.0, 'id': u'AWW3yZOubIicFyUL0_lv', 'metadata': None}, {'path': u'/home/mycomp/Documents/folder1/907675_16389607.JPG', 'score': 0.5119519, 'dist': 0.2922064602034243, 'id': u'AWW3bhtybIicFyUL0uVN', 'metadata': None}]

print([x['path'].rsplit('/', 1)[1] for x in lst])
# ['906350_16379886.JPG', '907675_16389607.JPG']
0 голосов
/ 10 сентября 2018

Используйте os.basename , чтобы извлечь имя файла, и получите ключ path, а не весь словарь.(Также не вижу необходимости использовать enumerate здесь)

import os # goes at the top of your script
for v in a:
    print(os.path.basename(v['path']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...