İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Özel Ders Başvuru Ücretsiz ön görüşme Ana Sayfa

SyntaxError: unterminated string literal” Hatası Nasıl Çözülür?

syntaxerror-unterminated-string-literal-hatasi-nasil-cozulur
Bu yazıda neler var?
  1. Hata mesajındaki satır ve işaret nasıl okunur?
  2. Metnin içindeki tırnak işareti nasıl yazılır?
  3. Windows dosya yolunda ters bölü nasıl kullanılır?
  4. Çok satırlı metinler ve hatayı bulma adımları

SyntaxError: unterminated string literal hatasını çözmek için metni başlatan tırnağı bul ve uygun kapanış tırnağını ekle. Bu hata, tek veya çift tırnakla açılan bir metin aynı satırda kapatılmadığında ortaya çıkabilir. Üç tırnakla açılan metinler ise birden fazla satıra yayılabilir ve yine üç tırnakla kapatılır.

Hata mesajındaki satır ve işaret nasıl okunur?

Hata mesajındaki satır ve işaret nasıl okunur?

Hata mesajındaki satır numarası ve ^ işareti, Python'ın sorunu belirlediği yeri bulmana yardımcı olur. Bu yerin çevresindeki tırnakları ve gerekirse önceki satırları da kontrol et.

Python'da string, harf, rakam ve noktalama işareti gibi karakterlerden oluşan metin verisidir. Örneğin "Merhaba" bir string değeridir ve başındaki çift tırnak, sonundaki çift tırnakla kapanır.

Aşağıdaki satırda metin çift tırnakla başlıyor ancak kapanış tırnağı eksik bırakılıyor:

print("Merhaba)

Python bu kodu çalıştırmaya hazırlanırken metnin sonunu bulamadığı için SyntaxError verir; ekrana Merhaba yazdırılmaz. Kapanış parantezinden önce çift tırnağı eklersen kod çalışır:

print("Merhaba")

Beklenen çıktı:

Merhaba

Hata mesajında detected at line 1 gibi bir ifade görürsen bu, sorunun belirtilen satırda tespit edildiğini söyler. ^ işareti de yorumlayıcının belirlediği konumu gösterir; asıl neden işaretin yakınındaki önceki karakterlerde veya önceki satırlarda bulunabilir.

Benzer bir durumda eski Python sürümlerinde EOL while scanning string literal mesajıyla da karşılaşabilirsin. Bu mesajı gördüğünde de metni açan tırnağın uygun biçimde kapanıp kapanmadığını incele.

Metnin içindeki tırnak işareti nasıl yazılır?

Metnin içinde dış tırnakla aynı türde bir tırnak kullanacaksan onu ters bölüyle kaçırabilir veya metnin dışındaki tırnak türünü değiştirebilirsin.

Şu satırda metin tek tırnakla açılır. Python, Ali sözcüğünden sonraki kesme işaretini metnin sonu olarak algılar ve satırın devamı sözdizimi hatasına yol açar:

print('Ali'nin notu')

Kaçış karakteri, metin içinde ardından gelen karakterin özel biçimde yorumlanmasını sağlayan ters bölü işaretidir (). Kesme işaretinin önüne ters bölü koyarak onun metni sonlandırmak yerine metnin parçası olmasını sağlayabilirsin:

print('Ali'nin notu')

Beklenen çıktı şöyledir; ters bölü çıktıda görünmez:

Ali'nin notu

Diğer seçenek, metni dışarıdan çift tırnakla çevirmektir. Böylece içerideki tek tırnağı ters bölü kullanmadan yazabilirsin:

print("Ali'nin notu")

Bu kodun çıktısı da aynıdır:

Ali'nin notu

Bir metin düzenleyiciden veya mesajlaşma uygulamasından kod kopyaladığında tırnakların biçimine de bak. “ ve ” gibi kıvrık tırnaklar, Python kodunda metni çevrelemek için kullanılan düz " ve ' işaretlerinin yerine geçmez; gerektiğinde bunları klavyenden düz tırnaklarla değiştir.

Windows dosya yolunda ters bölü nasıl kullanılır?

Windows dosya yolunda ters bölü nasıl kullanılır?

Windows dosya yolunu Python kodunda yazarken ters bölülerin nasıl yorumlandığına dikkat etmelisin. String, Python'da metin tutmak için kullanılan veri türüdür. Kaçış karakteri olan ters bölü, kendisinden sonraki karakterle birlikte özel anlam taşıyan bir dizi oluşturabilir.

Örneğin aşağıdaki yol, tırnakları kapalı olmasına rağmen hata üretir:

yol = "C:UsersAli"

Python, U ile başlayan kısmı bir Unicode kaçış dizisi olarak yorumlamaya çalışır. Bu dizinin beklenen biçimde tamamlanmaması bir SyntaxError oluşturur; sorun kapanmamış tırnaktan farklıdır.

Her ters bölüyü çift yazarak yolu düzeltebilirsin:

yol = "C:\Users\Ali"
print(yol)

Beklenen çıktı:

C:UsersAli

Bir başka seçenek raw string kullanmaktır. Raw string, başına r konan ve içindeki ters bölüleri çoğunlukla olduğu gibi ele alan metin yazımıdır:

yol = r"C:UsersAli"
print(yol)

Bu kod da C:UsersAli çıktısını üretir.

Kapanış tırnağından hemen önce tek ters bölü bulunması ise farklı bir soruna yol açar:

yol = "C:\Users\Ali"

Son ters bölü tırnağı kaçırdığı için Python metnin kapanışını bulamaz ve unterminated string literal hatası verir. Raw string de tek bir ters bölüyle bitirilemez.

Yolun sonunda ters bölü gerekiyorsa onu ayrı bir normal string olarak ekleyebilirsin:

yol = r"C:UsersAli" + "\"
print(yol)

Beklenen çıktı:

C:UsersAli

Çok satırlı metinler ve hatayı bulma adımları

Bir metni birden fazla satıra yaymak için üç çift tırnak veya üç tek tırnak kullanabilirsin. Açılışta hangi üçlüyü seçtiysen metni aynı üçlüyle kapatmalısın.

mesaj = """Merhaba!
Python öğreniyorum."""
print(mesaj)

Beklenen çıktı:

Merhaba!
Python öğreniyorum.

Kapanıştaki tırnak üçlüsü eksikse Python metnin sonunu bulamaz ve unterminated triple-quoted string literal mesajını gösterebilir:

mesaj = """Merhaba!
Python öğreniyorum.

Aşağıdaki programda ise kullanıcıdan alınan ad, bir selamlama metniyle birleştirilir:

ad = input("Adın: ")
print(f"Merhaba, {ad}!")

Örneğin Deniz girildiğinde ekranda şunlar görünür:

Adın: Deniz
Merhaba, Deniz!

Python konularındaki bilgini yoklamak için Python bilgi testini kullanabilirsin.

Hatanın kaynağını ararken şu adımları izle:

  1. Hata mesajında gösterilen satırı ve yakınındaki satırları incele.
  2. Açılış ve kapanışta düz tırnak işaretlerinin eşleştiğinden emin ol. Üç tırnak kullandıysan kapanışta da üç tırnak ara.
  3. Metnin içindeki kesme işaretlerinin string'i erken kapatıp kapatmadığını kontrol et.
  4. Kapanış tırnağından hemen önce ters bölü varsa tırnağın kaçırılıp kaçırılmadığına bak.

Bu kontroller, tırnakların ve ters bölülerin kodda hangi görevi üstlendiğini görmene yardımcı olur.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara