Я пытаюсь найти все прописные буквы в строке и заменить их строчным символом плюс underscore
. AFAIK для достижения этой цели нет стандартной строковой функции (?)Замените прописные буквы строчными + дополнительными символами
. если входная строка 'OneWorldIsNotEnoughToLive'
то строка вывода должна быть '_one_world_is_not_enough_to_live'
Я могу сделать это с помощью следующего фрагмента кода:
# This finds all the uppercase occurrences and split into a list
import re
split_caps = re.findall('[A-Z][^A-Z]*', name)
fmt_name = ''
for w in split_caps:
fmt_name += '_' + w # combine the entries with underscore
fmt_name = fmt_name.lower() # Now change to lowercase
print (fmt_name)
Я думаю, что это слишком много. Сначала re
, а затем итерация списка и, наконец, преобразование в нижний регистр. Возможно, есть более простой способ достичь этого, более питоновский и 1-2 строки.
Предлагайте лучшие решения. Благодарю.
Это не кодовое письмо. Почему бы вам не взглянуть на [методы 'str'] (https://docs.python.org/2.7/library/stdtypes.html#string-methods). * «нет стандартной строковой функции» * - что вы ожидали, 'str.uppercase_to_lowercase_with_underscores'? – jonrsharpe
Я знаю, что SO не является службой написания кода. Просто хотелось посмотреть, есть ли лучшие решения, более пифонические и 1-2 строки. – sk11
Если вы хотите, чтобы рабочий код был рассмотрен, попробуйте http://codereview.stackexchange.com – jonrsharpe