Python'da dize yöntemleri

Tamamlandı

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. Bu, 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())

Çıkış: 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. Bu, boşlukla ayrılmış her sözcüğün veya sayının listesini oluşturur:

temperatures = "Daylight: 260 F Nighttime: -280 F"
temperatures_list = temperatures.split()
print(temperatures_list)

Çıkış: ['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)

Çıkış: ['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")

Çıkış: False

print("Moon" in "This text will describe facts about the Moon")

Çıkış: 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"))

Çıkış: -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ı). Mars sözcüğünü arıyorsanız bu şekilde davranır:

temperatures = """Saturn has a daytime temperature of -170 degrees Celsius, while Mars has -28 Celsius."""
print(temperatures.find("Mars"))

Çıkış: 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())

Çıkış: 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())

Çıkış: THE MOON AND THE EARTH

Bahşiş

İç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

Bazı durumlarda, sunudaki düzensiz bilgileri ayıklamak için metinleri işlersiniz. Ö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)

Çıkış: 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('-'))

Çıkış: 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")

Çıkış: 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"))

Çıkış: 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)

Çıkış: False

text = "Temperatures on the Moon can vary wildly."
print("temperatures" in text.lower())

Çıkış: 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 tüm bölümleri 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))

Çıkış: 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.