У меня есть список, и я хочу удалить все ненужные символы, оставив только разрешение. Информация меняется в зависимости от источника, поэтому у меня не может быть постоянной переменной.

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

Я хочу раздеть все символы, кроме истинного разрешения

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

У меня буквально нет возможности с этим столкнуться, помощь была бы оценена

1
Awais 5 Июл 2019 в 01:47

5 ответов

Лучший ответ

Вам просто нужно 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+)$'

3
Max 4 Июл 2019 в 23:11

---редактировать---

Я наткнулся на этот вопрос в поиске 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

0
oxromantic 5 Июл 2019 в 10:34

Это использует сторонний 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']
0
tonypdmtr 4 Июл 2019 в 22:57

Вам не нужно использовать регулярные выражения. Это действительно просто, если вы просто разделите строку с :

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
0
NFR 4 Июл 2019 в 23:28

Этот фрагмент использует тот факт, что фактическое разрешение находится в конце каждой строки:

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

print(Source)
# ['1920x1080', '1280x720', '960x720']
-1
ipaleka 4 Июл 2019 в 23:02