Python'da dize yöntemleri
Dize yöntemleri Python'daki en yaygın yöntem türlerinden biridir. Genellikle bilgileri ayıklamak veya belirli bir biçime uydurmak için dizeleri işlemeniz gerekir. Python, en yaygın ve kullanışlı dönüştürmeleri yapmak için tasarlanmış çeşitli dize yöntemleri içerir.
Dize yöntemleri türün str
bir parçasıdır, yani yöntemlerin dize değişkenleri olarak veya doğrudan dizenin bir parçası olarak var olduğu anlamına gelir. Örneğin, yöntemi .title()
dizeyi ilk büyük harfle döndürür ve doğrudan bir dize ile kullanılabilir:
print("temperatures and facts about the moon".title())
Çıktı: Temperatures And Facts About The Moon
Aynı davranış ve kullanım bir değişkende gerçekleşir:
heading = "temperatures and facts about the moon"
heading_upper = heading.title()
print(heading_upper)
Dizeyi bölme
Yaygın bir dize yöntemidir .split()
. Bağımsız değişkenler olmadan, yöntemi dizeyi her boşlukta ayırır. yöntemini bu şekilde kullanırsanız, boşlukla ayrılmış her sözcüğün veya sayının listesini oluşturursunuz:
temperatures = "Daylight: 260 F Nighttime: -280 F"
temperatures_list = temperatures.split()
print(temperatures_list)
Çıktı: ['Daylight:', '260', 'F', 'Nighttime:', '-280', 'F']
Bu örnekte birden çok satırla ilgileniyorsunuz, dolayısıyla (örtük) yeni satır karakteri her satırın sonundaki dizeyi bölmek için kullanılabilir ve tek satırlar oluşturulur:
temperatures = "Daylight: 260 F\n Nighttime: -280 F"
temperatures_list = temperatures.split('\n')
print(temperatures_list)
Çıktı: ['Daylight: 260 F', 'Nighttime: -280 F']
Bu bölme türü, bilgileri işlemek veya ayıklamak için bir döngüye ihtiyacınız olduğunda veya bir metin dosyasından veri yüklerken kullanışlı hale gelir.
Dize arama
Bazı dize yöntemleri, bir döngü kullanmadan işlemeden önce içerik arayabilir. Çeşitli gezegenlerde ve aylarda sıcaklıkları tartışan iki cümleniz olduğunu varsayalım. Ancak, yalnızca ay ile ilgili sıcaklıklarla ilgileniyorsunuz. Yani, cümleler Ay'dan bahsetmiyorsa, bilgi ayıklamak için işlenmemelidir.
Belirli bir sözcüğün, karakterin veya karakter grubunun dizede var olup olmadığını keşfetmenin en basit yolu işlecini in
kullanmaktır:
print("Moon" in "This text will describe facts and challenges with space travel")
Çıktı: False
print("Moon" in "This text will describe facts about the Moon")
Çıktı: True
Dizedeki belirli bir sözcüğün konumunu bulma yaklaşımı, yöntemini kullanmaktır .find()
:
temperatures = """Saturn has a daytime temperature of -170 degrees Celsius, while Mars has -28 Celsius."""
print(temperatures.find("Moon"))
Çıktı: -1
.find()
yöntemi, sözcük bulunamadığında bir -1
döndürür veya dizini döndürür (dizedeki yeri temsil eden sayı). Aşağıdaki örnekte, Mars sözcüğünü arıyorsanız nasıl davranacağı gösterilmektedir:
temperatures = """Saturn has a daytime temperature of -170 degrees Celsius, while Mars has -28 Celsius."""
print(temperatures.find("Mars"))
Çıktı: 64
64
dizesinde göründüğü konumdur "Mars"
.
İçerik aramanın başka bir yolu, dizedeki .count()
belirli bir sözcüğün toplam oluşum sayısını döndüren yöntemini kullanmaktır:
temperatures = """Saturn has a daytime temperature of -170 degrees Celsius, while Mars has -28 Celsius."""
print(temperatures.count("Mars"))
print(temperatures.count("Moon"))
1
0
Python'daki dizeler büyük/küçük harfe duyarlıdır, yani ay ve ay farklı sözcükler olarak kabul edilir. Büyük/küçük harfe duyarsız bir karşılaştırma yapmak için yöntemini kullanarak bir dizeyi tüm küçük harflere .lower()
dönüştürebilirsiniz:
print("The Moon And The Earth".lower())
Çıktı: the moon and the earth
yöntemine .lower()
benzer şekilde dizeler de tam tersini yaparak her karakteri büyük harfe dönüştüren bir .upper()
yönteme sahiptir:
print("The Moon And The Earth".upper())
Çıktı: THE MOON AND THE EARTH
İpucu
İçeriği ararken ve denetlerken, büyük/küçük harfle eşleşmeyi engellememesi için dizeyi küçük harfle küçük harfe dönüştürürken daha sağlam bir yaklaşım kullanabilirsiniz. Örneğin, sözcüğün kaç kez göründüğünü sayıyorsanız, her ikisi de aynı sözcük olsa bile yöntemi The öğesinin göründüğü saatleri saymazdı. Yöntemini kullanarak .lower()
tüm karakterleri küçük harfle değiştirebilirsiniz.
İçeriği denetleme
Sunudaki düzensiz bilgileri ayıklamak için metinleri işlediğiniz zamanlar vardır. Örneğin, aşağıdaki dizenin işlenmesi yapılandırılmamış bir paragraftan daha basittir:
temperatures = "Mars Average Temperature: -60 C"
Mars'taki ortalama sıcaklığı ayıklamak için aşağıdaki yöntemlerle iyi iş çıkarabilirsiniz:
temperatures = "Mars Average Temperature: -60 C"
parts = temperatures.split(':')
print(parts)
print(parts[-1])
['Mars average temperature', ' -60 C']
' -60 C'
Yukarıdaki kod, iki nokta üst üste (:
) sonrasındaki her şeyin bir sıcaklık olduğuna güvenir. Dize, iki öğenin listesini oluşturan konumunda :
bölünür. [-1]
Listede kullanarak, bu örnekteki sıcaklık olan son öğeyi döndürür.
Metin düzensizse, değeri almak için aynı bölme yöntemlerini kullanamazsınız. Öğeleri döngüye alıp değerlerin belirli bir türde olup olmadığını denetlemeniz gerekir. Python,dize türünü denetlemeye yardımcı olan yöntemlere sahiptir:
mars_temperature = "The highest temperature on Mars is about 30 C"
for item in mars_temperature.split():
if item.isnumeric():
print(item)
Çıktı: 30
.isnumeric()
yönteminde olduğu gibi ondalık .isdecimal()
gibi görünen dizeleri de denetleyebilirsiniz.
Önemli
Bunun döndüreceğini False
öğrenmek "-70".isnumeric()
şaşırtıcı olabilir. Bunun nedeni, dizedeki tüm karakterlerin sayısal olması ve tirenin (-
) sayısal olması gerekmediğindendir. Bir dizedeki negatif sayıları denetlemeniz gerekiyorsa yöntem .isnumeric()
çalışmaz.
Değerleri denetlemek için dizelere uygulayabileceğiniz ek doğrulamalar vardır. Negatif sayılar için, tire sayıya ön eklenmiştir ve bu, yöntemiyle .startswith()
algılanabilir:
print("-60".startswith('-'))
Çıktı: True
Benzer şekilde, .endswith()
yöntemi bir dizenin son karakterini doğrulamaya yardımcı olur:
if "30 C".endswith("C"):
print("This temperature is in Celsius")
Çıktı: This temperature is in Celsius
Metin dönüştürme
Metnin başka bir şeye dönüştürülmesi gereken durumlarda yardımcı olan başka yöntemler de vardır. Şimdiye kadar Santigrat için C ve Fahrenheit için F kullanabilen dizeler gördünüz. Bir karakterin .replace()
veya karakter grubunun oluşumlarını bulmak ve değiştirmek için yöntemini kullanabilirsiniz:
print("Saturn has a daytime temperature of -170 degrees Celsius, while Mars has -28 Celsius.".replace("Celsius", "C"))
Çıktı: Saturn has a daytime temperature of -170 degrees C, while Mars has -28 C.
Daha önce de belirtildiği gibi, .lower()
büyük/küçük harfe duyarlı olmayan bir arama yapmak için metni normalleştirmenin iyi bir yoludur. Şimdi bazı metinlerin sıcaklıkları tartışıp tartışmadığını hızlıca denetleyelim:
text = "Temperatures on the Moon can vary wildly."
print("temperatures" in text)
Çıktı: False
text = "Temperatures on the Moon can vary wildly."
print("temperatures" in text.lower())
Çıktı: True
Büyük/küçük harfe duyarlı olmayan doğrulamayı her zaman yapmanız gerekmeyebilir, ancak metin karışık büyük/küçük harf kullandığında her harfi küçük harfe çevirmeniz iyi bir yaklaşımdır.
Metni böldükten ve dönüştürmeleri gerçekleştirdikten sonra parçaları yeniden birleştirmeniz gerekebilir. Yöntemin .split()
karakterleri ayırabildiği gibi, .join()
yöntemi de bunları yeniden bir araya getirebilir.
.join()
yöntemi, bağımsız değişken olarak yinelenebilir bir (Python listesi gibi) gerektirdiğinden kullanımı diğer dize yöntemlerinden farklı görünür:
moon_facts = ["The Moon is drifting away from the Earth.", "On average, the Moon is moving about 4cm every year."]
print(' '.join(moon_facts))
Çıktı: The Moon is drifting away from the Earth. On average, the Moon is moving about 4cm every year.
Bu örnekte, ' '
listedeki her öğeyi birleştirmek için kullanılır.