2016-07-14 7 views
0

Я пытаюсь разобрать список, чтобы получить отдельные изображения, возвращенные скриптом bash (хранятся в списках ошибок в скрипте py). Как я могу сделать это с помощью «re»?Как разобрать список в python, используя re

Баш скрипт

#!/bin/bash 
value(){ 
for entry in * 
do 
if expr "$(file -b $entry)" : 'JPEG ' >/dev/null; 
then 
    echo -e "$entry" 
fi 
done 
} 
value 

питон код

import subprocess 
errors = [subprocess.check_output(['/black.sh'])] 
print errors 

Выход

11_37_24.jpeg 
11_38_02.jpeg 
11_39_56.jpeg 
11_40_20.jpeg 
11_40_32.jpeg 
11_45_03.jpeg 

Список "errors" становится присваивается строка длины 1:

errors = ["11_37_24.jpeg 11_38_02.jpeg 11_39_56.jpeg 11_40_20.jpeg 11_40_32.jpeg 11_45_03.jpeg"] 

Однако, я хочу, чтобы получить эти изображения отдельно, чтобы использовать его в HTML-страницы. Как я могу это сделать с помощью «re»? Есть ли другая альтернатива?

+2

Вы действительно хотите повторно? Не хватит ли 'errors.split()'? –

+3

Похоже, что это должно быть ['errors = subprocess.check_output (['/black.sh']) .split()'] (https://ideone.com/9x7AyN), если в именах файлов нет пробелов. –

+1

@StephanW. Это сломало бы имена файлов, содержащие пробелы. 'errors.split ('\ n')' безопаснее. Еще лучше было бы добавить '\ 0' в конце имен файлов и использовать' .split ('\ 0') '. – Bakuriu

ответ

0

я сделать несколько предположений (на примере ввода вы даете):

  • имена файлов только содержат цифры и символы подчеркивания (так что я могу использовать \w в регулярном выражении)
  • слов в имени файла всегда сцеплены подчеркиванием (без пробелов)
  • каждый файл является файлов JPEG

код:

import re 

errors = ["11_37_24.jpeg 11_38_02.jpeg 11_39_56.jpeg 11_40_20.jpeg 11_40_32.jpeg 11_45_03.jpeg"] 

re.findall('\w+\.jpeg', errors[0]) 
['11_37_24.jpeg', '11_38_02.jpeg', '11_39_56.jpeg', '11_40_20.jpeg', '11_40_32.jpeg', '11_45_03.jpeg'] 

Если мои предположения не соответствуют вашему проекту, re, вероятно, не подходит.

EDIT

ОП используется следующий код (который был дан в комментариях):

errors[0].split('\n') 
+0

Ваши предположения правы, и это работает прилично. Спасибо! – oldDoctor

Смежные вопросы