W tym artykule omówimy, jak zamienić pojedynczy lub wiele znaków w ciągu w Pythonie.
Python udostępnia funkcję str.replace () tj.
str.replace(old, new , count)
Zwraca nowy obiekt typu string, który jest kopią istniejącego ciągu z zastąpieniem zawartość. Ponadto
- Jeśli argument count nie zostanie podany, zwróci ciąg ze wszystkimi wystąpieniami „starego”, zastąpiony ciągiem „nowym”.
- Jeśli przekazano parametr count, to zwraca ciąg z pierwszymi wystąpieniami „starego” ciągu zamienionymi na „nowy” ciąg.
Rozumiemy na przykładach,
Zastąp wszystkie wystąpienia danego znaku / ciąg w ciągu
Załóżmy, że mamy ciąg znaków, np.
mainStr = "Hello, This is a sample string"
Teraz zastąpmy wszystkie wystąpienia 's „with„ X ”ie
"""Replace all occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "X")
Zawartość otherStr jest następująca,
Hello, ThiX iX a Xample Xtring
Jak stringi są niezmienne w Pythonie, więc nie możemy zmienić jego zawartości. Dlatego funkcje składowe, takie jak replace () zwracają nowy ciąg.
Ponieważ nie podaliśmy parametru count w funkcji replace (). Tak więc zamieni wszystkie wystąpienia „s” na „X”. Ale co, jeśli chcemy zastąpić tylko kilka pierwszych wystąpień zamiast wszystkich? Zobaczmy, jak to zrobić,
Zamień pierwszych n wystąpień danego znaku / ciągu podrzędnego w ciągu
Załóżmy, że mamy ciąg, np.
mainStr = "Hello, This is a sample string"
Teraz zamieńmy pierwsze 2 wystąpienia „s” na „XXXS”, tj.
"""Replace First 2 occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "XXXS", 2)
Zawartość otherStr jest następująca:
Hello, ThiXXXS iXXXS a sample string
Ponieważ przekazaliśmy parametr count jako 2, więc tylko 2 pierwsze wystąpienia „s” zostaną zastąpione w zwróconej kopii.
Zastąp wiele znaków / strings w łańcuchu
str.replace () funkcja może zastąpić wystąpienia tylko jednego podanego podłańcucha. Ale co, jeśli chcemy zamienić wiele podciągów w danym ciągu?
Załóżmy, że mamy ciąg, tj.
mainStr = "Hello, This is a sample string"
A teraz, jak zamienić wszystkie wystąpienia tych trzech znaków „s”, „l”, „a” na ten ciąg znaków „AA”?
Stwórzmy w tym celu nową funkcję zamiast replace (), np.
"""Replace a set of multiple sub strings with a new string in main string."""def replaceMultiple(mainString, toBeReplaces, newString): # Iterate over the strings to be replaced for elem in toBeReplaces : # Check if string is in the main string if elem in mainString : # Replace the string mainString = mainString.replace(elem, newString) return mainString
Zamieni wszystkie wystąpienia łańcuchów w List toBeReplaces na newString na głównej podanej liście mainString.
Zobaczmy, jak zamienić wystąpienia na „AA”, tj.
Zawartość elementu otherStr jest następująca,
HeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring
Pełny przykład jest następujący,
Wynik:
String with replaced Content : Hello, ThiX iX a Xample XtringHello, ThiXXXS iXXXS a sample stringHeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring