繁体   English   中英

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

[英]Remove unwanted characters from a list over a for loop

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

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

我想去除所有字符,除了真正的分辨率

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

我真的没有办法解决这个问题,将不胜感激

您只需要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+)$'的末尾添加$

这使用了第三方luapatt(pip install 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']

您不需要使用正则表达式。 如果只用以下方式分割字符串,那真的很简单:

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

- -编辑 - -

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

- -编辑 - -

为什么需要第三方图书馆? 只需使用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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM