Как заменить символ в строке на другую строку?
Проблема заключается в том, что такие команды работают просто так
s = "e"
s = s.replace("e", "E*x(t)")
# s = "E*x(t)"
print(s)
А вот допустим у нас массив из символов и нужно поменять соответствующий символ на формулку
if elements[i] == "e":
elements[i] = elements[i].replace("e", "E_{depth}_{i} * x_{depth}(t)".format(depth=depth, i=i))
# elements[i] = "E_{depth}_{i} * x_{depth}(t)".format(depth=depth, i=i)
elif elements[i] == "v":
elements[i] = "eta_{depth}_{i} * diff(x_{depth}(t),t)".format(depth=depth, i=i)
то выкидывает ошибку TypeError: 'str' object does not support item assignment
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Если вы хотите заменить i-ый элемент строки на то, что вам нужно, то метод replace вам не помощник.
Это можно сделать так:
string = 'Hello'
elements = []
for i in range(len(string)):
if string[i]=='e':
elements.append(f'E_{i}')
elif string[i]=='o':
elements.append(f'O_{i}')
else:
elements.append(string[i])
new_string = ''.join(elements)
print(new_string)
Используя словарь для замен, можно сократить код:
string = 'Hello'
replacements = {
'e': 'E_{}',
'o': 'O_{}',
}
elements = []
for i in range(len(string)):
elements.append(replacements.get(string[i], string[i]).format(i))
new_string = ''.join(elements)
print(new_string)
А если еще и везде вызов метода format будет одинаковый (одинаковые аргументы):
string = 'Hello'
replacements = {
'e': 'E_{}',
'o': 'O_{}',
}
new_string = ''.join(
replacements.get(string[i], string[i]).format(i)
for i in range(len(string))
)
Автор решения: Kseniya Sinickaya
→ Ссылка
У меня Ваш код работает, но я добавила входной массив. Думаю, у вас он многомерный. Внимательнее посмотрите на исходный массив. У меня так:
elements =["e", "v","","ev"]
depth =0
for i in range(len(elements)):
if elements[i] == "e":
elements[i] = elements[i].replace("e", "E_{depth}_{i} * x_{depth}(t)".format(depth=depth, i=i))
# elements[i] = "E_{depth}_{i} * x_{depth}(t)".format(depth=depth, i=i)
elif elements[i] == "v":
elements[i] = "eta_{depth}_{i} * diff(x_{depth}(t),t)".format(depth=depth, i=i)
print(elements)
