Python'da Dize Değiştir | Python Dizesi Değiştir [222]

Yayınlanan: 2021-01-02

Python'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.