Як використовувати string.replace () у python 3.x


280

На python 3.x. застарілий рядок string.replace (). Який новий спосіб зробити це?


11
FWIW, у мене була така ж плутанина. Google "заміни рядка python" переніс мене на старі застарілі функції рядка в python 2.7. IMHO, цей розділ може використовувати велике жирне поле, що пояснює "string.xxx ()" проти "xxx (рядок)" та спрямовує людей на непридатні строкові методи, наприклад, на docs.python.org/library/stdtypes.html # string-
method

8
Документація Python - це абсолютна суперечка, враховуючи, що її рекламують як ідеальну першу мову. Досить часто цей матеріал є, але через поганий спосіб його організації, його часто недостатньо індексують пошукові системи або навіть власний сайт. Перегляньте посилання ToolMakerSteve, основні функції рядка зведені до стандартних типів. Це не з'являється під час пошуку рядкових функцій.
Andrew S

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" (регулярний вираз) має альтернативи для (деякі? Всі?) Застарілих рядкових функцій. У цьому випадку 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

36
Якщо мені доведеться прийти до переповнення стека для навігації в документацію Python, явно існує проблема. Команда Python, якщо ви читаєте. РОЗІБРАТИСЯ!
Ендрю S

2
Викликайте метод на об’єкті, а не на клас. 'foo'.replace(...)
Ігнасіо Васкес-Абрамс

108

replace()- метод <class 'str'>в python3:

>>> 'hello, world'.replace(',', ':')
'hello: world'

13

Метод заміни () в 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)'


1

FYI, додаючи деякі символи до довільного, закріпленого позицією слова всередині рядка (наприклад, змінивши прикметник до прислівника, додавши суфікс -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'

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.
jorfus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.