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 格式。

如何提取列表中的第一列?然后很容易检查。

4

4 回答 4

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]
于 2013-04-27T15:44:29.603 回答
0

如果这是简单列表,请执行以下操作:

  1. 一次读取一行作为字符串
  2. 在冒号上拆分字符串:
  3. 修剪第一项
  4. 将项目解析为数字
于 2013-04-27T15:45:05.823 回答
0

如果你只想知道某种格式是否存在,你只需要检查一行是否以'18'开头:

format_exisits = False

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

print(format_exists)
于 2013-04-27T15:45:10.263 回答
0

使用 subprocess 从 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
于 2013-04-27T15:46:09.630 回答