Питон: Как соединить первый и последний символ строки во вложенном списке на основе заданного условия

#python #list

Вопрос:

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

 my_list = [['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10'], 
['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10'], 
['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12'], 
['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12'], ['Race 1', 'Race 2', 'Race 3', 'Race 4', 'Race 5', 'Race 6', 'Race 7', 'Race 8', 'Race 9', 'Race 10', 'Race 11', 'Race 12']
]
 

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

 race_list = []
for race_number in my_list:
    for i in race_number :
        m = re.split(' |a',i)
        new_str = "".join(m[::len(m)-1]).strip()
        race_list.append(new_str)



  ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12']
 

мой вывод должен быть в таком виде

 [   ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'], 
   ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'],
   ['R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'],
   ['R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10'],
   ['R11', 'R12', 'R1', 'R2', 'R3', 'R4', 'R5', 'R6', 'R7', 'R8', 'R9', 'R10', 'R11', 'R12']
]
 

Комментарии:

1. Если это так же просто, как сопоставить ваш текущий вложенный список с первым символом строки, за которым следует число после пробела, то вы могли бы просто сделать [[item[0] item.split()[1] for item in nested] for nested in my_list]

Ответ №1:

Используйте регулярное выражение, чтобы получить первый символ и число в конце.

 race_list = []
for race_number in my_list:
    new_rn = []
    for i in race_number:
        match = re.search(r'^(.).*?(d )



, i)
new_rn.append(match.group(1) match.group(2))
race_list.append(new_rn)