разбиение строки на несколько значений с помощью re.split () - PullRequest
1 голос
/ 03 мая 2020

У меня есть строка: "2y20w2d2h2m2s" Мне нужно разделить ее так: ["2y","20w","2d","2h","2m"2s”] Я пытался использовать re.split, но я не мог заставить его работать, это была моя попытка: time = re.split("s m h d w y", time) * time is string выше, наконец, я абрикос из вас помог бы понять, как заставить его работать

Ответы [ 4 ]

2 голосов
/ 03 мая 2020

Код:

import re

time_str = "2y20w2d2h2m2s"
time = re.findall(r"(\d*\S)", time_str)
print(time)

Выход:

>>> python3 test.py 
['2y', '20w', '2d', '2h', '2m', '2s']

Попробуйте онлайн:

0 голосов
/ 03 мая 2020

Если указать максимально возможное значение c для вашего варианта использования:

import re
s = "2y20w2d2h2m2s"
re.findall('([0-9]{1,2}[ywdhms]{1})', s)

Вывод: ['2y', '20w', '2d', '2h', '2m', '2s']

Это дает именно то, что вы хотите, без посторонних букв или цифр с более чем две цифры.

0 голосов
/ 03 мая 2020

Попробуйте:

import re

print(re.findall('(\d+[a-z])', "2y20w2d2h2m2s"))

Вывод

['2y', '20w', '2d', '2h', '2m', '2s']

Пояснение

Шаблон регулярного выражения для 1 или более чисел сопровождаемый письмом

(\d+[a-z])
0 голосов
/ 03 мая 2020

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

string = "2y20w2d2h2m2s"

print(string.replace('2', ' 2').split())
...