Делайте строки строчными только после стрелки вправо - PullRequest
3 голосов
/ 27 мая 2020

Я бы хотел сделать строки строчными только после стрелки вправо (и до тех пор, пока она не коснется запятой) в Python.
Кроме того, я предпочитаю писать его в одну строку, если можно.
Вот мой код:

import re

line = "For example, →settle ACCOUNTs. After that, UPPER CASEs are OK."

string1 = re.sub(r'→([A-Za-z ]+)', r'→\1', line)
# string1 = re.sub(r'→([A-Za-z ]+)', r'→\1.lower()', line) # Pseudo-code in my brain
print(string1)
# Expecting: "For example, →settle accounts. After that, UPPERCASEs are OK."

# Should I always write two lines of code, like this:
string2 = re.findall(r'→([A-Za-z ]+)', line)
print('→' + string2[0].lower())
# ... and add "For example, " and ". After that, UPPER CASEs are OK." ... later?

Я считаю, что должен быть лучший способ. Как бы вы, ребята, сделали?
Заранее благодарю

1 Ответ

4 голосов
/ 27 мая 2020
import re

line = "For example, →settle ACCOUNTs. After that, UPPER CASEs are OK."

string1 = re.sub(r'→[A-Za-z ]+', lambda match: match.group().lower(), line)

print(string1)
# For example, →settle accounts. After that, UPPER CASEs are OK.

Из документации :

re.sub(pattern, repl, string, count=0, flags=0)

... repl может быть строкой или функцией ...

Если repl - функция, она вызывается для каждого неперекрывающегося вхождения шаблона. Функция принимает единственный аргумент объекта соответствия и возвращает заменяющую строку.

...