Как найти числа в строке списка и заменить его на указанный символ c? - PullRequest
1 голос
/ 01 августа 2020

У меня есть список раз во вложенном l oop. В списке несколько символов «AM» и «PM», объединенные с числами (например, PM4) в моем списке. Я хочу разделить числа и символы «AM», «PM» и добавить «-» перед числами. Как я могу решить проблему?

Я попытался найти числа в строке и использовать приведенный ниже код:

y = ''.join([n for n in mylist if n.isdigit()])

, тогда я хотел использовать его в перечислении, но я не знать, как им пользоваться.

mylist = [['x', '5 - 7:30 AM9:30 AM - 1 PM4 PM - 6 PM", "8 - 9:30 AM11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM6 PM - 7 PM", "6 - 8:30 AM9:30 AM']]

res= [['x', '5 - 7:30 AM - 9:30 AM - 1 PM - 4 PM - 6 PM", "8 - 9:30 AM - 11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM - 6 PM - 7 PM", "6 - 8:30 AM - 9:30 AM']]

Ответы [ 2 ]

3 голосов
/ 01 августа 2020

Подход с re, может быть следующим:

for a in mylist:
    for i,b in enumerate(a):
        a[i] = re.sub(r'(AM|PM)(\d+)',r'\1 - \2',b)

также в соответствии с комментарием Sushanth , вы можете использовать версию списка в одной строке :

[[re.sub("(AM|PM)(\d+)", r"\1 - \2", v) for v in l] for l in mylist]
0 голосов
/ 01 августа 2020

Используйте простой подход к следующему коду:

mylist = [['x', '5 - 7:30 AM9:30 AM - 1 PM4 PM - 6 PM", "8 - 9:30 AM11:30 AM'],['y', '6 - 7:30 AM 9:30 AM - 1 PM6 PM - 7 PM", "6 - 8:30 AM9:30 AM']]

res = list()

for i in mylist:
    inner = list()
    for j in i:
        j = j.replace('AM','AM - ')
        j = j.replace('PM','PM - ')
        j = j.strip().strip('-')
        j = j.replace('-  -','-')
        j = j.replace(' - "','"')
        inner.append(j.strip())
    res.append(inner)
print(res)

Это даст вам желаемый результат.

...