2013-04-27 2 views
0
Available formats: 
37 : mp4 [1080x1920] 
46 : webm [1080x1920] 
22 : mp4 [720x1280] 
45 : webm [720x1280] 
35 : flv [480x854] 
44 : webm [480x854] 
34 : flv [360x640] 
18 : mp4 [360x640] 
43 : webm [360x640] 
5 : flv [240x400] 
17 : mp4 [144x176] 

Это выход youtube-dl -F url. Я пишу сценарий, и мне нужно проверить, имеет ли видео формат 18.Как создать список с первым столбцом?

Как извлечь этот первый столбец в списке? Тогда это легко проверить.

+0

Что такое тип контента, простой текст? или JSON? или XML? Что-нибудь еще? –

ответ

0

Что-то вроде этого, принимая во внимание данные хранятся в текстовом файле:

In [15]: with open("abc") as f: 
    ....:  for line in f: 
    ....:   spl=line.split() 
    ....:   if '18' in spl: 
    ....:    print line 
    ....:    break 
    ....:    
18 : mp4 [360x640] 

или если данные хранятся в виде строки:

In [16]: strs="""Available formats: 
    ....:  37 : mp4 [1080x1920] 
    ....:  46 : webm [1080x1920] 
    ....:  22 : mp4 [720x1280] 
    ....:  45 : webm [720x1280] 
    ....:  35 : flv [480x854] 
    ....:  44 : webm [480x854] 
    ....:  34 : flv [360x640] 
    ....:  18 : mp4 [360x640] 
    ....:  43 : webm [360x640] 
    ....:  5 : flv [240x400] 
    ....:  17 : mp4 [144x176]""" 
    ....:  

In [17]: for line in strs.splitlines(): 
    ....:  spl=line.split() 
    ....:  if '18' in spl: 
    ....:   print line 
    ....:   break 
    ....:   
    18 : mp4 [360x640] 
+0

Ммм, я не думал писать запись в файл. На этом пути, конечно, легко. Я даю вам принятый ответ, потому что вы были первыми. – 2013-04-27 15:47:43

0

Если это простой список, сделайте следующим образом:

  1. Читать одну строку в то время как строка
  2. Spl это строка на толстой кишке:
  3. Обрежьте 1-й пункт
  4. Синтаксический элемент в виде числа
0

Если вы хотите знать, если определенный формат существует, то вам просто нужно проверить, если строка начинается с '18 ':

format_exisits = False 

for line in input_file: 
    if line.startswith('18 '): 
     format_exisits = True 
     break 

print(format_exists) 
0

использовать подпроцесс для получения вывода из python и разделения/полосы по вашему желанию.

import subprocess 

cmd = ["youtube-dl" "-F" "url"] 

output = subprocess.check_output(cmd) 

formats = {format[0].strip():format[1].strip() for format in [format.split(":") for format in output.split("\n")[1:]]} 

"17" in formats 
Смежные вопросы