如何使用第一列创建列表?

时间:2013-04-27 15:41:21

标签: python

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 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

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

  1. 一次读一行作为字符串
  2. 在冒号上分割字符串:
  3. 修剪第1项
  4. 将项目解析为数字

答案 2 :(得分:0)

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

format_exisits = False

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

print(format_exists)

答案 3 :(得分:0)

使用subprocess来获取python和split / strip的输出。

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