Как получить все элементы списка в регулярных выражениях в Python - PullRequest
1 голос
/ 06 апреля 2019

Я хочу напечатать элементы списка через регулярное выражение, это мой код:

myresult_tv = [ 'Extinct A Horizon Guide to Dinosaurs WEB h264-WEBTUBE', 'High Noon 2019 04 05 720p HDTV DD5 1 MPEG2-NTb', 'Wyatt Cenacs Problem Areas S02E01 1080p WEBRip x264-eSc', 'Bondi Vet S05E15 720p WEB x264-GIMINI', 'If Loving You Is Wrong S04E03 Randals Stage HDTV x264-CRiMSON', 'Wyatt Cenacs Problem Areas S02E01 WEBRip x264-eSc', 'Bondi Vet S05E15 1080p WEB x264-GIMINI']


li = []

for a in myresult_tv:
    w = re.match(".*\d ", a)
    c =w.group()
    li.append(c)

print(li)

и результат:

    Traceback (most recent call last):
  File "azazzazazaaz.py", line 31, in <module>
    c =w.group()
AttributeError: 'NoneType' object has no attribute 'group'

***Repl Closed***

Ответы [ 3 ]

1 голос
/ 06 апреля 2019

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

match = re.search(pattern, string)
if match:
    process(match)
0 голосов
/ 07 апреля 2019

Поскольку я не понимаю, каков ваш ожидаемый результат, я использую то же регулярное выражение, что и ваше.Попробуйте использовать этот код:

li = []
for a in myresult_tv:
    try:                             # I use try... except... in case the regex doesn't work at some list elements
        w = re.search("(.*\d )", a)  # I use search instead of match
        c = w.group()
        li.append(c)
    except:
        pass

print(li)
0 голосов
/ 06 апреля 2019

Вы сказали, что хотите получить отдельные слова из каждой строки, вы можете вызвать split() для них, чтобы разбить более крупные строки на основе пробела.

myresult_tv = [ 'Extinct A Horizon Guide to Dinosaurs WEB h264-WEBTUBE', 'High Noon 2019 04 05 720p HDTV DD5 1 MPEG2-NTb', 'Wyatt Cenacs Problem Areas S02E01 1080p WEBRip x264-eSc', 'Bondi Vet S05E15 720p WEB x264-GIMINI', 'If Loving You Is Wrong S04E03 Randals Stage HDTV x264-CRiMSON', 'Wyatt Cenacs Problem Areas S02E01 WEBRip x264-eSc', 'Bondi Vet S05E15 1080p WEB x264-GIMINI']

li = []

for a in myresult_tv:
    for c in a.split(): 
         li.append(c)

print(li)

Дает:

['Вымершие', 'A', 'Horizon', 'Guide', 'to', 'Dinosaurs', 'WEB', 'h264-WEBTUBE', 'High', 'Noon', '2019', «04», «05», «720p», «HDTV», «DD5», «1», «MPEG2-NTb», «Wyatt», «Cenacs», «Problem», «Areas», «S02E01», «1080p», «WEBRip», «x264-eSc», «Bondi», «Vet», «S05E15», «720p», «WEB», «x264-GIMINI», «If», «Loving», «You ',' Is ',' Wrong ',' S04E03 ',' Randals ',' Stage ',' HDTV ',' x264-CRiMSON ',' Wyatt ',' Cenacs ',' Problem ',' Areas ',' S02E01 ',' WEBRip ',' x264-eSc ',' Bondi ',' Vet ',' S05E15 ',' 1080p ',' WEB ',' x264-GIMINI ']

Если вы действительно хотите регулярное выражение, re.split('\s+', s) будет работать, разбивая на любое количество пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...