Member 11362771 Ответов: 2

Как получить строку после последнего появления разделенного символа в Python


Привет есть следующие данные в списке

(carrier[5].pol[1].tuna)']
(carrier[6].pol[0].tuna)']
(carrier[6].pol[1].tuna)']
(carrier[7].pol[0].tuna)']
(carrier[7].pol[1].tuna)']
(fifo_i)']
(fisu_power_monitor_inst)']
(genblk1[0].MFA_MULT[0].com)']
(genblk1[0].MFA_MULT[1].com)']
(genblk1[0].MFA_MULT[2].com)']
(genblk1[0].MFA_MULT[3].com)']
(genblk1[0].MUX[0].miso)']
(genblk1[0].MUX[0].tuna)']
(genblk1[0].MUX[1].miso)']
(genblk1[0].MUX[1].tuna)']
(genblk1[0].MUX[2].miso)']
(genblk1[0].MUX[2].tuna)']
(genblk1[0].MUX[3].miso)']
(genblk1[0].MUX[3].tuna)']
u_cpri_port']
ul_pac_inst']
pack[0].abc_xyz']
pack[1].abc_xyz']
valid.cstr']


Что я уже пробовал:

Я хочу проверить каждый элемент списка на наличие "." и сохранить данные, которые идут после "."
Я попробовал следующее, но оно также дает мне данные перед "."
[y  for x in slist for y in x.rsplit('.')]


Я также попробовал следующее, Но это дает мне неправильные данные
[x.strip(".")[-1] for x in slist]




Я хочу, чтобы мой окончательный список был следующим:
tuna)']
tuna)']
tuna)']
tuna)']
tuna)']
(fifo_i)']
(fisu_power_monitor_inst)']
com)']
com)']
com)']
com)']
miso)']
tuna)']
miso)']
tuna)']
miso)']
tuna)']
miso)']
tuna)']
u_cpri_port']
ul_pac_inst']
abc_xyz']
abc_xyz']
cstr']

2 Ответов

Рейтинг:
17

CPallini

Попробуй

[ x.split('.')[-1] for x in slist] 


Richard MacCutchan

+5, я забыл про -1.

CPallini

Я только что это обнаружил. :-)
У меня 5, а также.

Richard MacCutchan

Спасибо, но ваш ответ гораздо более питонский.

Member 11362771

@CPallini..it работал отлично

CPallini

Я этому очень рад.

Рейтинг:
1

Richard MacCutchan

[y for x in slist for y in x.rsplit('.')[2]]

Но это будет работать только для строк, содержащих два символа точки. Вам нужно предварительно обработать каждую строку, чтобы проверить ее формат перед добавлением в новый список.
for item in slist:
    set = item.split('.') # try the split
    if len(set) == 3:     # is it a three word set?
        item = set[2]     # only need the last member of the set
    print(item)