#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)