Zamień ciąg w Pythonie | Zastąp ciąg Pythona [2022]

Opublikowany: 2021-01-02

Zastę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.