Заменить только окончание строки - PullRequest
0 голосов
/ 11 декабря 2018

Меня раздражает, что я не могу сделать следующее в одной строке.У меня такое ощущение, что это можно сделать с помощью понимания списка, но как?

given_string = "first.second.third.None"
string_splitted = given_string.split('.')
string_splitted[-1] = "fourth"
given_string = ".".join(string_splitted)

Обратите внимание, что число точек (.) В указанной строке является постоянным (3).Поэтому я всегда хочу заменить четвертый фрагмент строки.

Ответы [ 5 ]

0 голосов
/ 11 декабря 2018
my_string = "first.second.third.None"
my_sub = re.sub(r'((\w+\.){3})(\w+)', r'\1fourth', my_string)
print(my_sub)
first.second.third.fourth

Хорошее объяснение этого стиля здесь: Как найти и заменить n-ное вхождение слова в предложении, используя регулярное выражение python?

0 голосов
/ 11 декабря 2018

Вы можете использовать rsplit.Это будет работать независимо от того, сколько точек предшествует последнему разделению

given_string = "first.second.third.None"
string_splitted = given_string.rsplit('.', 1)[0] + '.fourth'

print(string_splitted)
first.second.third.fourth
0 голосов
/ 11 декабря 2018

Попробуйте этот вкладыш: -

print (".".join(given_string.split(".")[:-1]+["Fourth"]))

Вывод:

first.second.third.Fourth
0 голосов
/ 11 декабря 2018

Похоже, вы должны быть в состоянии сделать это без разбиения на массив.Найдите последний . и нарежьте туда:

> given_string = "first.second.third.None"
> given_string[:given_string.rfind('.')] + '.fourth'

'first.second.third.fourth'
0 голосов
/ 11 декабря 2018

Вы можете попробовать это:

given_string = "first.second.third.None"
given_string = ".".join(given_string.split('.')[:-1] + ["fourth"])
print(given_string)

Вывод:

first.second.third.fourth
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...