Cách sử dụng string.replace () trong python 3.x


279

Chuỗi.replace () không dùng nữa trên python 3.x. Cách mới để làm điều này là gì?


11
FWIW, tôi đã có sự nhầm lẫn tương tự. Google "thay thế chuỗi python" đưa tôi đến các hàm chuỗi cũ không dùng nữa trong python 2.7. IMHO, phần đó có thể sử dụng một hộp lớn, in đậm giải thích "string.xxx ()" vs "xxx (string)", và chỉ đạo mọi người những phương pháp chuỗi không bị phản đối, ví dụ như để docs.python.org/library/stdtypes.html # chuỗi phương thức
ToolmakerSteve 13/12/13

8
Tài liệu Python là một sự hỗn loạn tuyệt đối khi xem xét nó được chào mời như một ngôn ngữ đầu tiên lý tưởng. Thông thường các công cụ có ở đó, nhưng do cách tổ chức kém, nó thường không được lập chỉ mục tốt bởi các công cụ tìm kiếm hoặc thậm chí trang web của riêng họ. Nhìn vào liên kết của ToolMakerSteve, các hàm chuỗi lõi được đưa vào các loại tiêu chuẩn. Điều này không xuất hiện khi bạn tìm kiếm các hàm chuỗi.
Andrew S

10
Để rõ ràng: string.replace () thực sự không bị phản đối trên Python 3.
sboggs11

2
Đó là trong việc xây dựng trong các loại cho 3.x docs.python.org/3.7/library/stdtypes.html#str.replace
JerodG

1
Đôi khi mọi người viết "str.replace" khi họ có nghĩa là [biến chuỗi của bạn] .replace. Bởi vì 'str' cũng là tên của lớp có liên quan, điều này có thể gây nhầm lẫn.
TextGeek

Câu trả lời:


315

Như trong 2.x, sử dụng str.replace().

Thí dụ:

>>> 'Hello world'.replace('world', 'Guido')
'Hello Guido'

4
Mô-đun "re" (biểu thức chính quy) có các lựa chọn thay thế cho (một số? Tất cả?) Các hàm chuỗi không dùng nữa. Trong trường hợp này , re.sub().
ToolmakerSteve 13/12/13

8
@ToolmakerSteve: các stringchức năng không được dùng nữa. strphương pháp thì không.
Ignacio Vazquez-Abrams

6
FWIW, Bất cứ khi nào tôi google, tôi dường như kết thúc tại các hàm chuỗi không dùng nữa. Đây là liên kết đến các phương thức chuỗi (không phản đối). docs.python.org/3.3/library/stdtypes.html#string-methods ~ or_for_2 ~ docs.python.org/2/library/stdtypes.html#string-methods
ToolmakerSteve

36
Nếu tôi phải đến stack stack để điều hướng tài liệu Python thì có một vấn đề rõ ràng. Đội Python nếu bạn đang đọc. KHẮC PHỤC VẤN ĐỀ!
Andrew S

2
Gọi phương thức trên đối tượng, không phải lớp. 'foo'.replace(...)
Ignacio Vazquez-Abrams

108

replace()là một phương thức <class 'str'>trong python3:

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

13

Phương thức thay thế () trong python 3 được sử dụng đơn giản bởi:

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
Hãy nhớ rằng bạn cũng không thể đặt 3 và nó sẽ thay đổi tất cả các sự trùng hợp.
Ender Nhìn

4

Bạn có thể sử dụng str.replace () như một chuỗi str.replace () . Hãy nghĩ rằng bạn có một chuỗi như thế 'Testing PRI/Sec (#434242332;PP:432:133423846,335)'và bạn muốn thay thế tất cả các '#',':',';','/'dấu hiệu bằng '-'. Bạn có thể thay thế theo cách này (cách thông thường),

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

hoặc theo cách này (chuỗi 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

Thử cái này:

mystring = "This Is A String"
print(mystring.replace("String","Text"))

1

FYI, khi thêm một số ký tự vào một từ tùy ý, cố định vị trí bên trong chuỗi (ví dụ: thay đổi tính từ thành trạng từ bằng cách thêm hậu tố -ly ), bạn có thể đặt hậu tố ở cuối dòng để dễ đọc. Để làm điều này, sử dụng split()bên trong 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
Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về lý do tại sao và / hoặc cách nó trả lời câu hỏi sẽ cải thiện đáng kể giá trị lâu dài của nó. Vui lòng chỉnh sửa câu trả lời của bạn để thêm một số lời giải thích.
CodeMouse92

Câu trả lời đúng được nêu trước đó là string.replace hoạt động trong python3.
jorfus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.