Zamień ciąg w Pythonie | Zastąp ciąg Pythona [2022]
Opublikowany: 2021-01-02Zastępowanie znaków i ciągów w Pythonie jest kluczowym zadaniem, jeśli chodzi o czyszczenie danych lub przetwarzanie tekstu. Twoje dane mogą mieć problemy z formatowaniem ze znakami śmieci, które należy usunąć, kategorie mogą mieć problemy z pisownią itp. Również podczas wstępnego przetwarzania tekstu w przypadku problemów opartych na NLP, zastąpienie ciągów jest najbardziej podstawowym i najważniejszym krokiem podczas przygotowywania danych tekstowych.
W tym samouczku omówimy wiele sposobów zastępowania różnych typów ciągów. Jeśli jesteś zainteresowany nauką o danych, sprawdź nasze certyfikaty z dziedziny nauki o danych. Pod koniec tego samouczka będziesz mieć wiedzę na temat następujących rzeczy:
- Metoda replace() Pythona
- Regex sub() metoda
- join() i filter()
- Zastępowanie danych liczbowych w ciągach
Spis treści
Zamień Pythona()
Metoda replace(old_str, new_str, count) składa się z 3 argumentów:
- old_str: ciąg lub część ciągu, który należy zastąpić
- new_str: ciąg, którym należy zastąpić stary ciąg
- count: Liczba razy, kiedy dany ciąg wymaga wymiany
Przyjrzyjmy się kilku przykładom, aby zrozumieć działanie.
Pojedyncza wymiana
Mystr = „To jest przykładowy ciąg” Newstr = Mystr.replace( 'jest' , 'było' ) |
#Wyjście: To był przykładowy ciąg |
Jeśli pamiętasz, ciągi w Pythonie są niezmienne. Więc kiedy wywołujemy metodę replace, zasadniczo tworzy ona kolejny obiekt ciągu ze zmodyfikowanymi danymi. Ponadto w powyższym przykładzie nie określiliśmy parametru count. Jeśli nie zostanie określony, metoda replace zastąpi wszystkie wystąpienia ciągu.
Wielokrotna wymiana
Mystr = „To jest przykładowy ciąg” Newstr = Mystr.replace( “s” , “X” ) |
#Wyjście: ThiX iX Xample Xstring |
Wielokrotne zastępowanie pierwszych n wystąpień
Jeśli chcesz tylko pierwszych N wystąpień,
Mystr = „To jest przykładowy ciąg” Newstr = Mystr.replace( “s” , “X” , 3 ) |
#Wyjście: ThiX iX przykładowy ciąg |
Zamień wiele ciągów
W powyższych przykładach zamieniliśmy jeden ciąg inną liczbę razy. A co, jeśli chcesz zastąpić różne ciągi w tym samym dużym ciągu. Możemy napisać dla niego skuteczną funkcję i wykonać ją tą samą metodą.
Rozważmy przykład jak powyżej, ale teraz chcemy zastąpić „h”, „is” i „ng” na „X”.
def MultipleStrings (mainStr, strReplaceList, newStr) : # Iteracja po ciągach, które mają zostać zastąpione dla elem w strReplaceList : # Sprawdzanie, czy ciąg jest w głównym ciągu if elem w mainStr : # Zastąp ciąg mainStr = mainStr.replace(elem, newStr) powrót mainStr |
Mystr = „To jest przykładowy ciąg” Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , "X" ) |
#Wyjście: TXX X próbka striX |
Przeczytaj: samouczek Pythona
Zastępowanie wyrażeniem regularnym
Wyrażenie regularne Pythona to moduł przeznaczony specjalnie do obsługi danych tekstowych — czy to do wyszukiwania podciągów, zastępowania ciągów czy cokolwiek innego. Regex ma funkcję sub() do łatwego wyszukiwania i zastępowania/podstawiania podciągów. Omówmy jego składnię i kilka przypadków użycia.
Funkcja regex.sub(pattern, Replacement, original_string) przyjmuje 3 argumenty:
- wzorzec: podciąg, który należy dopasować i zastąpić.
- zastąpienie: może być ciągiem znaków, który należy umieścić, lub funkcją wywoływalną, która zwraca wartość, którą należy umieścić.
- oryginalny_ciąg: główny ciąg, w którym podciąg ma zostać zastąpiony.
Podobnie jak metoda replace, wyrażenie regularne tworzy również inny obiekt ciągu ze zmodyfikowanym ciągiem. Przyjrzyjmy się kilku przykładom roboczym.
Usuwanie białych znaków
Białe spacje można traktować jako znaki specjalne i zastępować innymi znakami. W poniższym przykładzie zamierzamy zastąpić spacje znakiem „X”.
importuj ponownie Mystr = „To jest przykładowy ciąg” # Zamień wszystkie spacje w Mystr na „X” Newstr = re.sub( r”\s+” , 'X' , Mystr) |
#Wyjście: ThisXisXaXsampleXstring |
Jak widzimy, wszystkie spacje zostały zastąpione. Wzorzec jest podany przez r”\s+”, co oznacza wszystkie białe znaki.
Usuwanie wszystkich znaków specjalnych
Aby usunąć wszystkie znaki specjalne, przekażemy wzorzec, który pasuje do wszystkich znaków specjalnych.
importuj ponownie importować ciąg Mystr = „Tempo@@&[(000)]%%$@@66isit$$#$%-+Str.” wzorzec = r'[' + string.punctuation + ']' # Zamień wszystkie znaki specjalne w ciągu na X Newstr = re.sub(wzór, 'X' , Mystr) |
#Wyjście: TempoXXXXX000XXXXXXX66miejsceXXXXXXXStr |
Usuwanie podciągu bez uwzględniania wielkości liter

W rzeczywistych danych mogą wystąpić sytuacje, w których może istnieć wiele wersji tego samego słowa z różnymi dużymi i małymi literami. Aby usunąć je wszystkie, umieszczenie wszystkich słów osobno, ponieważ wzorzec nie byłby skuteczny. Funkcja regex sub() przyjmuje flagę re.IGNORECASE, aby zignorować przypadki. Zobaczmy, jak to działa.
importuj ponownie Mystr = „To JEST próbka Istring” # Zamień podciąg w ciągu na podejście bez uwzględniania wielkości liter Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE) |
#Wyjście: To** ** próbka **string |
Usuwanie wielu znaków za pomocą wyrażenia regularnego
Funkcja regex może łatwo usunąć wiele znaków z ciągu. Poniżej znajduje się przykład.
importuj ponownie Mystr = „To jest przykładowy ciąg” wzór = r'[hsa]' # Usuń znaki 'h', 's' i 'a' z łańcucha Newstr = re.sub(wzór, ” , Mystr) |
#Wyjście: Ti i mple tring |
Zastępowanie za pomocą join()
Innym sposobem na usunięcie lub zastąpienie znaków jest iteracja ciągu i sprawdzenie ich pod kątem określonego warunku.
charList = [ 'h' , 's' , 'a' ] Mystr = „To jest przykładowy ciąg” # Usuń wszystkie znaki z listy, z łańcucha Newstr = ” .join((elem za elem w Mystr , jeśli elem nie ma w charList)) |
#Wyjście: Ti i mple tring |
Zastępowanie za pomocą join() i filter()
Powyższy przykład można również wykonać za pomocą funkcji filtrowania.
Mystr = „To jest przykładowy ciąg” charList = [ 'h' , 's' , 'a' ] # Usuń wszystkie znaki z listy, z łańcucha Newstr = “” .join(filter( lambda k: k not in charList , Mystr)) |
#Wyjście: Wciąż próbuję |
Trzeba przeczytać: fascynujące aplikacje Pythona w prawdziwym świecie
Zastępowanie numerów
Wiele razy dane liczbowe są również obecne w ciągach, które mogą wymagać usunięcia i przetworzenia osobno jako innej cechy. Przyjrzyjmy się kilku przykładom, aby zobaczyć, jak można je zaimplementować.
Korzystanie z wyrażenia regularnego
Rozważ poniższy ciąg, z którego musimy usunąć dane liczbowe.
Mystr = „Przykładowy ciąg 9211 roku 20xx” wzór = r'[0-9]' # Dopasuj wszystkie cyfry w ciągu i zastąp je pustym ciągiem Newstr = re.sub(wzór, „” , Mystr) |
#Wyjście: Przykładowy ciąg roku xx |
W powyższym kodzie używamy pasującego wzorca r'[0-9]', aby dopasować wszystkie cyfry.
Korzystanie z funkcji join()
Możemy również iterować po ciągu i odfiltrować cyfry za pomocą metody isdigit() , która zwraca wartość False dla alfabetów.
Mystr = „Przykładowy ciąg 9211 roku 20xx” # Iteruje po znakach w ciągu i łączy wszystkie znaki z wyjątkiem cyfr Newstr = „” .join((element dla elementu w Mystr , jeśli nie element.isdigit())) |
#Wyjście: Przykładowy ciąg roku xx |
Korzystanie z join() i filter()
Podobnie możemy również umieścić warunek filtrowania w funkcji filtru, aby zwracać tylko znaki, które zwracają True .
Mystr = „Przykładowy ciąg 9211 roku 20xx” # Filtruj wszystkie cyfry ze znaków w ciągu i dołącz pozostałe znaki Newstr = „” .join(filter( element lambda : nie item.isdigit(), Mystr)) |
#Wyjście: Przykładowy ciąg roku xx |
Zanim pójdziesz
Omówiliśmy wiele przykładów pokazujących różne sposoby usuwania lub zastępowania znaków/spacji/liczb z ciągu. Zdecydowanie zalecamy wypróbowanie większej liczby przykładów i różnych sposobów wykonania powyższych przykładów, a także więcej własnych przykładów.
Jeśli chcesz dowiedzieć się więcej o Pythonie, nauce o danych, sprawdź program Executive PG w dziedzinie Data Science IIIT-B i upGrad, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami z branży , 1 na 1 z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.
Jaka jest potrzeba metody zamiany ciągów w Pythonie?
Ta funkcja staje się bardzo przydatna, gdy stosujesz do niej techniki czyszczenia danych. Za pomocą tej funkcji można łatwo usunąć niepotrzebne lub śmieciowe znaki. Zastępowanie ciągów lub znaków jest wykorzystywane nie tylko do czyszczenia danych, ale także do przetwarzania problemów NLP.
Posiadanie tego typu metod do radzenia sobie z ciągami jest ważne, ponieważ cała dziedzina nauki o danych zajmuje się ogromnymi porcjami danych.
Jakie są zalety używania typów danych typu string?
Ciągi są przydatne, ponieważ przy użyciu tego typu danych można z łatwością przechowywać duże ilości danych. Python obsługuje wiele przydatnych metod do wykonywania operacji na łańcuchach. Ponadto łańcuchy znaków są mutowalne w Pythonie, co zmniejsza generowanie błędów i są również tańsze.
Ciąg znaków jest jednym z najczęściej używanych wbudowanych typów danych w Pythonie. Nie tylko w Pythonie, ale wiele innych języków również obsługuje to jako predefiniowany typ danych i obsługuje różne metody operowania na nich.