У меня есть очень сложные струны, с которыми я боролся. Например,
str1 = '95% for Pikachu, 92% for Sandshrew'
str2 = '70% for Paras & 100% Arcanine'
str3 = '99% Diglett, 40% Dugtrio'
str4 = '10% Squirtle, 100% for Alakazam'
str5 = '30% Metopod & 99% Dewgong'
Строка начинается с %
целое число и может иметь for
или нет, затем следует имя покемона. Может быть знак comma(,)
или &
, а затем новое %
целое число. Наконец, есть еще одно имя покемонов. (Все начинаются с заглавной буквы) Я хочу извлечь двух покемонов, например, результат:
['Pikachu', 'Sandshrew']
['Paras', 'Arcanine']
['Diglett', 'Dugtrio']
['Squirtle', 'Alakazam']
['Metopod', 'Dewgong']
Я могу создать список всех покеменов, используя синтаксис in
, но это не лучший способ (в случае, если они добавляют больше покемонов) , Можно ли извлечь с помощью Regex? Заранее спасибо! EDIT По запросу я добавляю свой код,
str_list = [str1, str2, str3, str4, str5]
for x in str_list:
temp_list = []
if 'for' in x:
temp = x.split('% for', 1)[1].strip()
temp_list.append(temp)
else:
temp = x.split(" ", 1)[1]
temp_list.append(temp)
print(temp_list)
Я знаю, что это не регулярное выражение express. Выражение, которое я пробовал, это \d+
, чтобы извлечь целое число, чтобы начать ... но не знаю, как начать. EDIT2 @ b_ c имеет хороший край, поэтому я добавляю его сюда
edge_str = '100% for Pikachu, 29% Pika Pika Pikachu'
результат
['Pikachu', 'Pika Pika Pikachu']