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
read more