2012-02-26 26 views
110

String.replace() jest przestarzałe na python 3.x. Jaki jest nowy sposób robienia tego?Jak używać string.replace() w python 3.x

+9

FWIW, miałem ten sam błąd. "Python string replace" zabrał mnie do starych przestarzałych funkcji napisanych w pythonie 2.7. IMHO, sekcja ta może używać dużego pogrubionego pola wyjaśniającego "string.xxx()", a "xxx (string)", i kierowanie ludzi do nie-przestarzałych metod łańcuchowych, np. http://docs.python.org/library/stdtypes.html#string-methods – ToolmakerSteve

+1

Dokumentacja w języku Python jest absolutnym gniciem, biorąc pod uwagę, że jest reklamowany jako idealny pierwszy język. Często zdarza się, że coś tam jest, ale ze względu na złą drogę jest zorganizowany, często nie jest indeksowany przez wyszukiwarki ani nawet własną stronę. Spójrz na link narzędzia ToolMakerSteve, funkcje rdzenia ciągów są sprowadzone do standardowych typów. Nie pojawia się, gdy szukasz funkcji ciągu. –

Odpowiedz

126

jak w 2.x, należy str.replace().

Przykład:

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

Moduł "re" (wyrażenie regularne) ma alternatywy dla (niektórych? Wszystkich?) Wycofanych funkcji łańcuchowych. W tym przypadku, 're.sub()'. – ToolmakerSteve

+3

@ToolmakerSteve: Funkcje 'string' są przestarzałe. Metody "str" ​​nie są. –

+0

oooh. Myliłem się wtedy. Dzięki! – ToolmakerSteve

78

replace() jest sposób <class 'str'> w python3:

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

Spróbuj tego:

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

FYI, gdy dołączając kilka znaków do dowolnego, pozycja, stały słowo wewnątrz łańcucha (np zmieniając przymiotnik do przysłówek przez dodanie przyrostka -ly), można umieścić przyrostek na końcu wiersza, aby uzyskać jego czytelność. Aby to zrobić, należy użyć split() wewnątrz replace():

s="The dog is large small" 
ss=s.replace(s.split()[3],s.split()[3]+'ly') 
ss 
'The dog is largely small' 
-4
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') 
+3

Podczas gdy ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, dlaczego i/lub odpowiedź na to pytanie, znacznie poprawiłoby jego długoterminową wartość. Proszę [edytuj] swoją odpowiedź, aby dodać wyjaśnienie. – CodeMouse92

0

replace() metoda w Pythonie 3 służy po prostu:

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 
+0

Pamiętaj, że również nie możesz umieścić 3, a to zmieniłoby wszystkie zbiegów okoliczności. –

+0

Tak, jest to opcjonalne. :) –

Powiązane problemy