Python'da Dize Değiştir | Python Dizesi Değiştir [222]
Yayınlanan: 2021-01-02Python'da karakterleri ve dizeleri değiştirmek, Veri Temizleme veya Metin İşleme söz konusu olduğunda çok önemli bir görevdir. Verileriniz, kaldırılması gereken çöp karakterlerle, kategorilerde yazım sorunlarıyla vb. biçimlendirme sorunları yaşıyor olabilir. Ayrıca NLP tabanlı problemler için metin ön işlemesi yapılırken, metinsel verileri hazırlarken dize değiştirme en temel ve önemli adımdır.
Bu öğreticide, farklı türdeki dizeleri değiştirmenin birden çok yolunu inceleyeceğiz. Veri bilimine girmekle ilgileniyorsanız, veri bilimi sertifikalarımıza göz atın. Bu eğitimin sonunda, aşağıdakiler hakkında bilgi sahibi olacaksınız:
- Python yerine() yöntemi
- Normal ifade alt() yöntemi
- birleştirme() ve filtre()
- Dizelerdeki sayısal verileri değiştirme
İçindekiler
Python yerine ()
replace(old_str, new_str, count) yöntemi 3 bağımsız değişkenden oluşur:
- old_str: Değiştirilmesi gereken dize veya dizenin bir parçası
- new_str: Eski dizenin değiştirilmesi gereken dize
- count: Belirli bir dizenin kaç kez değiştirilmesi gerektiğinin sayısı
Çalışmayı anlamak için birkaç örnek üzerinden gidelim.
Tek değiştirme
Mystr = "Bu bir örnek dizedir" Newstr = Mystr.replace( 'is' , 'eski' ) |
#Çıktı: Thwas örnek bir dizeydi |
Hatırlarsanız, Python'daki Stringler değişmezdir. Dolayısıyla replace yöntemini çağırdığımızda, esasen değiştirilmiş verilerle başka bir dize nesnesi yapar. Ayrıca yukarıdaki örnekte count parametresini belirtmedik. Belirtilmezse, replace yöntemi dizenin tüm oluşumlarını değiştirecektir.
Çoklu değiştirme
Mystr = "Bu bir örnek dizedir" Newstr = Mystr.replace( “s” , “X” ) |
#Çıktı: ThiX iX ve Xample Xtring |
Birden çok ilk n oluşumu değiştirin
Yalnızca ilk N oluşumunu istiyorsanız,
Mystr = "Bu bir örnek dizedir" Newstr = Mystr.replace( “s” , “X” , 3 ) |
#Çıktı: ThiX iX bir örnek dizi |
Birden çok dize değiştirin
Yukarıdaki örneklerde, bir dizgiyi farklı sayıda değiştirdik. Şimdi, aynı büyük dizgede farklı dizgileri değiştirmek isterseniz. Bunun için etkin bir fonksiyon yazıp aynı yöntemle halledebiliriz.
Örneği yukarıdaki gibi düşünün, ancak şimdi “h”, “is” ve “ng” yerine “X” koymak istiyoruz.
def MultipleStrings (mainStr, strReplaceList, newStr) : # Değiştirilecek diziler üzerinde yineleme strReplaceList'teki elem için : _ # Dizinin ana dizide olup olmadığını kontrol etme mainStr 'de ise elem : # Dizeyi değiştir mainStr = mainStr.replace(elem, newStr) dönüş mainStr |
Mystr = "Bu bir örnek dizedir" Newstr = MultipleStrings(Mystr, [ 'h' , 'is' , 'ng' ] , “X” ) |
#Çıktı: TXX X bir örnek striX |
Okuyun: Python Eğitimi
normal ifade ile değiştirme
Python'un normal ifadesi, özellikle metin verileriyle ilgilenmek için bir modüldür - ister alt dizeleri bulmak, ister dizeleri değiştirmek veya herhangi bir şey olsun. Regex, alt dizeleri kolayca bulmak ve değiştirmek/değiştirmek için sub() işlevine sahiptir. Sözdizimini ve birkaç kullanım örneğini gözden geçirelim.
regex.sub(pattern, replace, orijinal_string) işlevi 3 bağımsız değişken alır:
- desen: eşleşmesi ve değiştirilmesi gereken alt dize.
- değiştirme: yerleştirilmesi gereken bir dize veya yerleştirilmesi gereken değeri döndüren çağrılabilir bir işlev olabilir.
- orijinal_dizge: alt dizginin değiştirilmesi gereken ana dizgi.
Değiştirme yöntemiyle aynı şekilde, normal ifade de değiştirilen dizeyle başka bir dize nesnesi oluşturur. Birkaç çalışma örneğini gözden geçirelim.
Boşluğu kaldırma
Boşluklar özel karakterler olarak ele alınabilir ve diğer karakterlerle değiştirilebilir. Aşağıdaki örnekte, boşlukları “X” ile değiştirmeyi düşünüyoruz.
yeniden içe aktar Mystr = "Bu bir örnek dizedir" # Mystr'deki tüm boşlukları 'X' ile değiştirin Newstr = re.sub( r”\s+” , 'X' , Mystr) |
#Çıktı: BuXisXaXörnekXstring |
Gördüğümüz gibi, tüm boşluklar değiştirildi. Desen, tüm boşluk karakterleri anlamına gelen r”\s+” ile verilir.
Tüm özel karakterlerin kaldırılması
Tüm özel karakterleri kaldırmak için tüm özel karakterlerle eşleşen bir desen geçeceğiz.
yeniden içe aktar ithalat dizesi Mystr = “Tempo@@&[(000)]%%$@@66isit$$#$%-+Str” desen = r'[' + dize.noktalama + ']' # Bir dizedeki tüm özel karakterleri X ile değiştirin Newstr = re.sub(desen, 'X' , Mystr) |
#Çıktı: TempoXXXXX000XXXXXXX66isitXXXXXXXStr |
Alt dize büyük/küçük harfe duyarlı olmadığı için kaldırılıyor

Gerçek hayat verilerinde, aynı kelimenin farklı büyük ve küçük harflerle birçok versiyonunun olabileceği durumlar olabilir. Hepsini kaldırmak için, kalıp olarak tüm kelimeleri ayrı ayrı koymak etkili olmaz. Regex sub() işlevi , vakaları yok saymak için re.IGNORECASE bayrağını alır. Nasıl çalıştığını görelim.
yeniden içe aktar Mystr = "Bu bir örnek Istring'dir" # Bir dizedeki alt dizeyi büyük/küçük harfe duyarsız bir yaklaşımla değiştirin Newstr = re.sub( r'is' , '**' , Mystr, flags=re.IGNORECASE) |
#Çıktı: Th** ** bir örnek **tring |
Normal ifade kullanarak birden çok karakteri kaldırma
Normal ifade işlevi, bir dizeden birden çok karakteri kolayca kaldırabilir. Aşağıda bir örnek bulunmaktadır.
yeniden içe aktar Mystr = "Bu bir örnek dizedir" desen = r'[hsa]' # Bir dizeden 'h', 's' ve 'a' karakterlerini kaldırın Newstr = re.sub(desen, ” , Mystr) |
#Çıktı: ti i mple tr |
Join() kullanarak değiştirme
Karakterleri kaldırmanın veya değiştirmenin başka bir yolu, dizeyi yinelemek ve bazı koşullara karşı kontrol etmektir.
charList = [ 'h' , 's' , 'a' ] Mystr = "Bu bir örnek dizedir" # Listedeki tüm karakterleri diziden çıkarın Newstr = ” .join ((elem charList'te değilse , Mystr'deki öğe için öğe ) ) |
#Çıktı: ti i mple tr |
Join() ve filter() kullanarak değiştirme
Yukarıdaki örnek, filtre işlevi kullanılarak da yapılabilir.
Mystr = "Bu bir örnek dizedir" charList = [ 'h' , 's' , 'a' ] # Listedeki tüm karakterleri diziden çıkarın Newstr = “” .join(filtre( lambda k: k değil charList , Mystr)) |
#Çıktı: ben deniyorum |
Mutlaka Okuyun: Gerçek Dünyada Büyüleyici Python Uygulamaları
sayıların değiştirilmesi
Çoğu zaman sayısal veriler, farklı bir özellik olarak ayrı ayrı çıkarılması ve işlenmesi gerekebilecek dizelerde de bulunur. Bunların nasıl uygulanabileceğini görmek için birkaç örnek üzerinden gidelim.
normal ifade kullanma
Sayısal verileri çıkarmamız gereken aşağıdaki dizeyi düşünün.
Mystr = "20xx yılı için örnek dize9211" desen = r'[0-9]' # Dizedeki tüm rakamları eşleştirin ve bunları boş dizeyle değiştirin Newstr = re.sub(desen, “” , Mystr) |
#Çıktı: xx yılının örnek dizisi |
Yukarıdaki kodda, tüm basamakları eşleştirmek için r'[0-9]' eşleşen desenini kullanıyoruz.
join() işlevini kullanma
Ayrıca, alfabeler için False döndüren isdigit() yöntemini kullanarak dizeyi yineleyebilir ve rakamları filtreleyebiliriz .
Mystr = "20xx yılı için örnek dize9211" # Dizedeki karakterleri yineler ve rakamlar dışındaki tüm karakterleri birleştirir Newstr = “” .join(( item.isdigit() değilse Mystr'deki öğe için öğe ) ) |
#Çıktı: xx yılının örnek dizisi |
birleştirme() ve filtre() kullanma
Benzer şekilde, yalnızca True döndüren karakterleri döndürmek için filtre işlevine filtreleme koşulunu da koyabiliriz .
Mystr = "20xx yılı için örnek dize9211" # Dizedeki karakterlerden tüm rakamları filtreleyin ve kalan karakterleri birleştirin Newstr = “” .join(filtre( lambda öğesi: item.isdigit() değil , Mystr)) |
#Çıktı: xx yılının örnek dizisi |
Gitmeden önce
Bir dizeden karakterleri/boşlukları/sayıları kaldırmanın veya değiştirmenin farklı yollarını gösteren birçok örneği ele aldık. Yukarıdaki örnekleri ve ayrıca kendinize ait daha fazla örneği yapmak için daha fazla örnek ve farklı yollar denemenizi şiddetle tavsiye ederiz.
Python, veri bilimi hakkında bilgi edinmek istiyorsanız, IIIT-B & upGrad'ın çalışan profesyoneller için oluşturulan ve 10'dan fazla vaka çalışması ve proje, pratik uygulamalı atölye çalışmaları, endüstri uzmanlarıyla mentorluk sunan Veri Biliminde Yönetici PG Programına göz atın , sektör danışmanlarıyla bire bir, en iyi firmalarla 400+ saat öğrenim ve iş yardımı.
Python'da dize değiştirme yöntemine ne gerek var?
Bu işlev, ona veri temizleme teknikleri uygularken çok kullanışlı hale gelir. Bu işlev kullanılarak gereksiz veya gereksiz karakterler kolayca kaldırılabilir. Dizelerin veya karakterlerin değiştirilmesi yalnızca veri temizlemede değil, NLP'nin işleme problemlerinde de kullanılır.
Tüm veri bilimi alanı çok büyük veri parçalarıyla ilgilendiğinden, dizelerle başa çıkmak için bu tür yöntemlere sahip olmak önemlidir.
Dize veri türlerini kullanmanın avantajları nelerdir?
Bu veri türünü kullanarak büyük miktarda veriyi kolaylıkla depolayabileceğiniz için dizeler kullanışlıdır. Python, dizeler üzerinde işlem gerçekleştirmek için çok sayıda yararlı yöntemi destekler. Ayrıca, Python'da dizeler değiştirilebilir, bu da hata oluşumunu azaltır ve aynı zamanda daha ucuzdur.
Dize, Python'da en çok kullanılan yerleşik veri türlerinden biridir. Yalnızca python'da değil, diğer birçok dilde de bunu önceden tanımlanmış bir veri türü olarak destekler ve bunlar üzerinde çalışmak için çeşitli yöntemleri destekler.