通过for循环从列表中删除不需要的字符

时间:2019-07-04 22:47:02

标签: python

我在这里有一个列表,我想删除所有不需要的字符,仅保留分辨率。信息根据来源而变化,所以我不能有一个常量。

Source = ['First link: Resolution:1920x1080', 'Second Link: Resolution:1280x720', 'Third Link: Available - Resolution:960x720']

我要去除除真实分辨率以外的所有字符

Source = ['1920x1080', '1280x720', '960x720']

我实际上无法解决这个问题,将不胜感激

5 个答案:

答案 0 :(得分:3)

您只需要re,它是内置模块。

import re

links = ['First link: Resolution:1920x1080', 'Second Link: Resolution:1280x720', 'Third Link: Available - Resolution:960x720']
resolutions = []
for link in links:
    result = re.search('(\d+x\d+)', link)
    if result is not None:
        resolutions.append(result.group(0))

print(resolutions)

结果:

['1920x1080', '1280x720', '960x720']

如果分辨率始终位于字符串的末尾,则可以在正则表达式$的末尾添加'(\d+x\d+)$'

答案 1 :(得分:0)

这使用了第三方luapatt(点安装luapatt):

Source = [
  'First link: Resolution:1920x1080',
  'Second Link: Resolution:1280x720',
  'Third Link: Available - Resolution:960x720'
  ]

import luapatt as lua
Source = [lua.match(x,'%d+x%d+') for x in Source]

print(Source)

输出:

['1920x1080', '1280x720', '960x720']

答案 2 :(得分:0)

您不需要使用正则表达式。如果您只用:

分割字符串,那真的很简单
ss = ['First link: Resolution:1920x1080', 'Second Link: Resolution:1280x720', 'Third Link: Available - Resolution:960x720']
output = []
for s in ss:
    out.append(s.split(':')[-1]) # [-1] is the last item of a List

如果使用列表理解,则更简单-仅需一行

output = [s.split(':')[-1] for s in ss] # ss is your input list

答案 3 :(得分:0)

---编辑---

我通过搜索LUA遇到了这个问题,所以我在LUA中给出了答案。但是似乎这个问题不是关于如何用lua编写,对此感到抱歉。

---编辑---

您为什么需要3rd Party库? 只需使用string.match

local Source = {'First link: Resolution:1920x1080', 'Second Link: Resolution:1280x720', 'Third Link: Available - Resolution:960x720'}

local output = {}

for i,v in ipairs(Source) do
    table.insert(output, string.match(v, "(%d+x%d+)"))
end

for i,v in ipairs(output) do
    print(i,v)
end

答案 4 :(得分:-1)

此代码段使用的事实是,实际分辨率位于每个字符串的末尾:

Source = [link[link.find("Resolution:")+11:] for link in Source]

print(Source)
# ['1920x1080', '1280x720', '960x720']