Как использовать string.replace () в python 3.x

280

String.replace () устарела в python 3.x. Каков новый способ сделать это?

Dewsworld
источник
11
FWIW, у меня была такая же путаница. Google "замена строки Python" привел меня к устаревшим строковым функциям в Python 2.7. ИМХО, в этом разделе может использоваться большой жирный прямоугольник, поясняющий «string.xxx ()» против «xxx (string)», и направляющий людей на не устаревшие строковые методы, например, на docs.python.org/library/stdtypes.html. # string-method
ToolmakerSteve
8
Документация на Python - абсолютная рутина, учитывая, что она преподносится как идеальный первый язык. Довольно часто материал есть, но из-за плохой организации он часто плохо индексируется поисковыми системами или даже их собственным сайтом. Посмотрите на ссылку ToolMakerSteve, основные строковые функции объединены со стандартными типами. Это не появляется при поиске строковых функций.
Андрей С
10
Для ясности: string.replace () фактически не рекомендуется в Python 3.
sboggs11
2
Он находится во встроенных типах для 3.x docs.python.org/3.7/library/stdtypes.html#str.replace
JerodG
1
Иногда люди пишут "str.replace", когда они имеют в виду [ваша строковая переменная] .replace. Поскольку 'str' также является именем соответствующего класса, это может сбить с толку.
TextGeek

Ответы:

315

Как и в 2.x, используйте str.replace().

Пример:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'
Игнасио Васкес-Абрамс
источник
4
Модуль re (регулярное выражение) имеет альтернативы для (некоторых? All?) Устаревших строковых функций. В этом случае re.sub().
ToolmakerSteve
8
@ToolmakerSteve: stringфункции устарели. strметодов нет.
Игнасио Васкес-Абрамс
6
FWIW, всякий раз, когда я Google, я, кажется, в конечном итоге в старых устаревших строковых функций. Вот ссылка на (не рекомендуется) строковые методы. docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve
37
Если мне придется перейти к переполнению стека для навигации по документации Python, то возникнет явная проблема. Команда Python, если вы читаете. РАЗОБРАТЬСЯ!
Андрей С
2
Вызовите метод объекта, а не класса. 'foo'.replace(...)
Игнасио Васкес-Абрамс
108

replace()это метод <class 'str'>в Python3:

>>> 'hello, world'.replace(',', ':')
'hello: world'
кэв
источник
13

Метод replace () в python 3 используется просто:

a = "This is the island of istanbul"
print (a.replace("is" , "was" , 3))

#3 is the maximum replacement that can be done in the string#

>>> Thwas was the wasland of istanbul

# Last substring 'is' in istanbul is not replaced by was because maximum of 3 has already been reached

источник
2
Помните, что также вы не можете поставить 3, и это изменит все совпадения.
Ender Look
4

Вы можете использовать str.replace () как цепочку str.replace () . Думаю, что у вас есть строка, похожая на, 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'и вы хотите заменить все '#',':',';','/'знаки на '-'. Вы можете заменить его любым способом (обычным способом),

>>> str = 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'
>>> str = str.replace('#', '-')
>>> str = str.replace(':', '-')
>>> str = str.replace(';', '-')
>>> str = str.replace('/', '-')
>>> str
'Testing PRI-Sec (-434242332-PP-432-133423846,335)'

или так (цепочка str.replace () )

>>> str = 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'.replace('#', '-').replace(':', '-').replace(';', '-').replace('/', '-')
>>> str
'Testing PRI-Sec (-434242332-PP-432-133423846,335)'
Кушан Гунасекера
источник
3

Попробуй это:

mystring = "This Is A String"
print(mystring.replace("String","Text"))
Эд Даббах
источник
1

К вашему сведению, добавляя некоторые символы к произвольному слову с фиксированной позицией внутри строки (например, заменяя прилагательное на наречие, добавляя суффикс -ly ), вы можете поставить суффикс в конце строки для удобства чтения. Для этого используйте split()внутри replace():

s="The dog is large small"
ss=s.replace(s.split()[3],s.split()[3]+'ly')
ss
'The dog is largely small'
Ooker
источник
0
ss = s.replace(s.split()[1], +s.split()[1] + 'gy')
# should have no plus after the comma --i.e.,
ss = s.replace(s.split()[1], s.split()[1] + 'gy')
Гарри Бинсвангер
источник
6
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как он отвечает на вопрос, значительно улучшит его долгосрочную ценность. Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение.
CodeMouse92
Правильный ответ ранее изложен string.replace работает в python3.
Йорфус