Форум сайта python.su
Помогите нубу :)
Как сделать множественную замену в тексте одинаковых слов, на разные.
Например, есть текст:
txt = ‘'’ text {slovo} text text text text {slovo}
test {slovo} text text text text {slovo} ‘'’
Как заменить так что бы на выходе получилось ?
txt = ‘'’ text {slovo№1} text text text text {slovo№2}
test {slovo№3} text text text text {slovo№4}'''
Заранее спасибо
Отредактировано (Сен. 18, 2010 15:48:19)
Офлайн
Можно так:
txt = "text slovo text text text text slovo test slovo text text text text slovo"
words = ['slovo#1','slovo#2',...,'slovo#n']
parts = txt.split('slovo')
final = parts[0]
for i in range(len(words)):
final = "".join([final, words[i], parts[i+1]])
Отредактировано (Сен. 18, 2010 16:16:38)
Офлайн
Или так:
txt = "text slovo text text text text slovo test slovo text text text text slovo"
words = ['slovo#1','slovo#2',...,'slovo#n']
for word in words:
txt = txt.replace('slovo',word,1)
Офлайн
Огромное спасибо.
Офлайн
Доброго времени суток! Нашел две темы по сабжу и решил обновить ту, которая поновее. (ей всего-то 6 лет :) Так как начал учить Python, то не от скуки, но практики ради появилась такая задача.
Хотелось, чтобы вы подсказали более приемлемый способ решения данной задачи, - так сказать Python way.
Вводные данные: Нужно сделать двойное преобразование без использования модуля re: Список в строку, а потом строку обратно в список. На выходе должны получить идентичный список с исходным. Необходимо использовать минимально возможное количество операций. Использовать регулярные выражение НЕЛЬЗЯ!
Вот мои решения… Требуется “здоровая” критика; А за длинные имена ссылок - заранее простите:
Вопрос: как теперь преобразовать строку str_from_list обратно, чтобы было так:#!/usr/bin/env python3 # -*- coding: utf-8 -*-# Создаем список. Значение range(n, n) можно брать произвольно, для удобства я взял такие: some_list = list(range(5, 15)) # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]# Преобразовываем список в строку. str_from_list = str(some_list) # [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
# Вариант №1 def string_to_list(txt): string = txt.replace('[', '') string = string.replace(']', '') string = string.replace(' ', '') string = string.split(',') lst = [] for char in string: lst.append(int(char)) return lst# Вариант №2 def string_to_list_v2(txt): del_char = ["[", "]", " ", "'"] empty_str = '' lst = [] for char in txt: if char not in del_char: empty_str += char empty_str = empty_str.split(",") for char in empty_str: lst.append(int(char)) return lst# Преобразовываем обратно в список и ссылки делаем короче для удобства вывода root = some_list var_1 = string_to_list(str_from_list) var_2 = string_to_list_v2(str_from_list) inspection = root == var_1 == var_2# Вывод. + вспомогательные данные. print(root, type(root)) print(str_from_list, type(str_from_list)) print(str_to_list, type(str_to_list)) print(var_1, type(var_1)) print(var_2, type(var_2)) print("{0} == {1} == {2} is {3}".format('root', 'var_1', 'var_2', inspection))
Офлайн
>>> lst = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> >>> list_to_string = str(lst) >>> string_to_list = list(map(int, list_to_string[1:-1].split(', '))) >>> string_to_list [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>>
>>> eval(list_to_string) [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>>
Отредактировано py.user.next (Май 10, 2016 12:54:31)
Офлайн