Cara menggunakan string.replace () di python 3.x

280

String.replace () tidak digunakan lagi di python 3.x. Apa cara baru untuk melakukan ini?

Dewsworld
sumber
11
FWIW, saya memiliki kebingungan yang sama. Google "mengganti string python" membawa saya ke fungsi string lama yang sudah usang di python 2.7. IMHO, bagian itu dapat menggunakan kotak tebal besar yang menjelaskan "string.xxx ()" vs "xxx (string)", dan mengarahkan orang ke metode string yang tidak usang, misalnya ke docs.python.org/library/stdtypes.html # string-methods
ToolmakerSteve
8
Dokumentasi Python adalah berantakan mutlak mengingat itu disebut-sebut sebagai bahasa pertama yang ideal. Cukup sering barang ada di sana, tetapi karena cara yang buruk diatur, sering tidak diindeks dengan baik oleh mesin pencari atau bahkan situs mereka sendiri. Lihatlah tautan ToolMakerSteve, fungsi string inti digabungkan ke tipe standar. Ini tidak muncul ketika Anda mencari fungsi string.
Andrew S
10
Agar lebih jelas: string.replace () sebenarnya tidak ditinggalkan di Python 3.
sboggs11
2
Ada dalam tipe bawaan
JerodG
1
Terkadang orang menulis "str.replace" ketika yang mereka maksud [variabel string Anda] .replace Karena 'str' juga merupakan nama kelas yang relevan, ini dapat membingungkan.
TextGeek

Jawaban:

315

Seperti pada 2.x, gunakan str.replace().

Contoh:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'
Ignacio Vazquez-Abrams
sumber
4
Modul "re" (ekspresi reguler) memiliki alternatif untuk fungsi string yang sudah usang (sebagian? Semua?). Dalam hal ini re.sub(),.
ToolmakerSteve
8
@ToolmakerSteve: stringfungsi sudah usang. strmetode tidak.
Ignacio Vazquez-Abrams
6
FWIW, Setiap kali saya google, saya sepertinya berakhir pada fungsi string yang sudah usang. Berikut ini tautan ke metode string (tidak usang). docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve
36
Jika saya harus datang untuk menumpuk overflow untuk menavigasi dokumentasi Python ada masalah yang jelas. Tim python jika Anda membaca. ATURLAH!
Andrew S
2
Panggil metode pada objek, bukan kelas. 'foo'.replace(...)
Ignacio Vazquez-Abrams
108

replace()adalah metode <class 'str'>dalam python3:

>>> 'hello, world'.replace(',', ':')
'hello: world'
kev
sumber
13

Metode replace () dalam python 3 digunakan hanya dengan:

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

sumber
2
Ingatlah bahwa Anda juga tidak dapat menempatkan 3 dan itu akan mengubah semua kebetulan.
Ender Look
4

Anda dapat menggunakan str.replace () sebagai rantai str.replace () . Pikirkan Anda memiliki string seperti 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'dan Anda ingin mengganti semua '#',':',';','/'tanda dengan '-'. Anda dapat menggantinya dengan cara ini (dengan cara normal),

>>> 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)'

atau dengan cara ini (rantai str.replace () )

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

Coba ini:

mystring = "This Is A String"
print(mystring.replace("String","Text"))
Ed Dabbah
sumber
1

FYI, saat menambahkan beberapa karakter ke kata arbitrer, posisi-tetap di dalam string (misalnya mengubah kata sifat menjadi kata keterangan dengan menambahkan akhiran -ly ), Anda dapat menempatkan akhiran di akhir baris agar mudah dibaca. Untuk melakukan ini, gunakan split()di dalam replace():

s="The dog is large small"
ss=s.replace(s.split()[3],s.split()[3]+'ly')
ss
'The dog is largely small'
Ooker
sumber
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')
Harry Binswanger
sumber
6
Sementara kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang mengapa dan / atau bagaimana ia menjawab pertanyaan akan secara signifikan meningkatkan nilai jangka panjangnya. Harap edit jawaban Anda untuk menambahkan beberapa penjelasan.
CodeMouse92
Jawaban yang benar sebelumnya dinyatakan string.replace berfungsi di python3.
jorfus