[英]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.