我在这里有一个列表,我想删除所有不需要的字符,仅保留分辨率。信息根据来源而变化,所以我不能有一个常量。
Source = ['First link: Resolution:1920x1080', 'Second Link: Resolution:1280x720', 'Third Link: Available - Resolution:960x720']
我要去除除真实分辨率以外的所有字符
Source = ['1920x1080', '1280x720', '960x720']
我实际上无法解决这个问题,将不胜感激
答案 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']