Skip to content

Kenan YAMAN

Dışı tekniker, içi yazılımcı

Menu
Menu

Python Kaçış İşaretleri

Posted on 26 Aralık 201923 Ocak 2021 by Kenan

Programlamayla uğraşıyor ve ilgi duyuyorsanız, kaçış işaretleri ya da kaçış dizilerini bir yerden görmüş ya da duymuşsunuzdur. Bir çok projenin en yoğun geçen saatlerinin ve mesailerinin sonunda bu hataya denk gelme ihtimaliniz çok yüksek, syntax Error!!! Bunun bir çok sebebi olduğu gibi en çok karşılaşılan ve gözden kaçan sorunu kaçış işaretlerinin unutulmasıdır. Özellikle programlamaya yeni başlayan bir çok insan bununla çok sık karşılaşır.

Nedir bu kaçış dizileri ? Pythonda bulunan ve özel anlam taşıyan işaret ya da karakterleri amaçları dışında kullanmak istediğimzde bu kaçış dizileriyle karşılaşırız.[partner] [space]
[goruntu_kare]

Örnek vermek gerekirse, pythonda bir string tanımlamak istediğimizde bunu üç farklı yolla yapabiliriz. Tek tırnak çift tırnak ya da üç tırnak kullanarak. Şöyle bir senaryo düşünelim, elimizde bir karakter dizini var ve burada tek tırnak kullanmamız gerekiyor .

'Burası Sakarya'dır' 

Bu şekilde kullanıırsak eğer python ilk tırnaktan sonra karakter dizinini oluşturacak ve Sakarya kelimesinin sonundaki tırnak işaretine geldiğinde karakter dizinini bitirecektir. Geriye kalan “dır” ekinin ne ifade ettiğini bilmediği için syntax error verecektir.

Bu ve buna benzer bir çok hatanın önüne geçebilmek için, kaçış dizilerini bilmemiz gerekiyor. Haydi başlayalım 🙂

Ters Taksim (\)

Bu konuları araştırıp bu sayfaya geldiğinize göre pythonda string tanımlamalarını bildiğinizi düşünüyorum. String tanımlarken yukarıda da belirttiğim gibi üç farklı yöntemi kullanabiliriz. Yukarıda verdiğim örnekten devam etmek istiyorum. Şöyle bir string tanımladığınızda:

 "Burası Sakarya"dır" 
String tanımlarken, syntax error hatası

hata alacağımızı biliyoruz. String tanımlamanın üç farklı yolu olduğunu söylemiştik, o zaman şöyle bir string tanımlaması yapamaz mıyız ?

"Burası Sakarya'dır" 

Yapabiliriz ve herhangibir syntax error hatası ile karşlılaşmayız.

Çift ile string tanımlayıp, tek tırnak işareti kullanmak

Hatta şöyle bir tanımlama bile yapabilirz:

"""Burası Sakarya"dır"""

Bu tanımlamayla da herhangi bir hata ile karşılaşmayız fakat mecburi olarak tek tırnak, çift tırnak ya da üç tırnak ile bir string tanımlamak zorunda kaldığımız anlarda, yardımımıza ters taksim işareti koşmaktadır 🙂

Bunun için tırnak işaretinden önce ters taksim kullanarak pythona, bu tırnak işareti ile string bitmiyor, daha devamı var mesajı veriyor. Ve python bunu gördüğünde çalışmasına devam edip stringi bitirecek olan ikinci bir tırnak işaretini arıyor. Tırnak işaretini bulduğunda string tanımlamasını bitirmiş oluyor. Hemen aynı örnek üzerinden bir gösterim yapalım
[goruntu_kare]

'Burası Sakarya\'dır' 
Tek tırnak ile ters taksim işareti kullanımı

Kodu bu şekilde yazdığımızda, herhangi bir hata ile karşılaşmayacağız.

Aynı kod çift tırnak ve üç tırnak içinde geçerlidir.

Çift tırnak ile ters taksim işareti kullanımı

İyi güzel de buna nerede ihtiyacımız olacak ? Şöyle bir senaryo düşünelim, kullanıcıya bir mesaj göndermek istiyorsunuz, ters taksim işaretini kullanabilirsiniz. Bir metin dosyası içinden bir karakter dizini okudunuz ve bu karakter dizini üzerinde işlem yapacaksınız fakat tek tırnaklar içinde yazılmış ve buna müdahale edemiyorsunuz bu durumda aldığınız karakter dizisini kullanmak isterseniz python hata verecektir. Bunu düzenleyip tırnak işaretinden önce ters taksim kullanabilirsiniz. [partner] [space]
[goruntu_yatay]

Satır Başı (\n)

\n karakter dizisi, pythonda bir alt satıra geçmeye yarayan özel bir karakterdir. Bu özel karakteri uzun satırlı metinler arasında istediğimiz anda alt satıra geçip programın işleyişine devam etmesini sağlamak için kullanırız.

Fakat şöyle bir durum var, bu özel karakter bir tanımlama içinde geçiyorsa ve bizde bu tanımlamayı kullanmak istiyorsak hiç beklenmedik çıktılara sebep olabilir. Bu yüzden özellikle dikkat edilmesi gereken konulardan biridir.

Şöyle bir senaryo düşünelim, bilgisayarımızda bulunan bir dosyasının yolunu ekrana yazdıralım, ama bu dosya yolunda ters taksim işaretinin yanına “n” karakteri gelirse, python için özel başka bir karakter dizisini istemsizce kullanmış olacağız. Böylece python bizim istediğimiz çıktıyı değil, o anda hangi özel karakteri kullanıyorsak onun işlevini yerine getirecektir. Hemen bir örnek yapalım:
[goruntu_yatay]

'C:\nabız\hastalar.txt'

[baglanti_yatay]Böyle bir tanımlama yaptığımızda python \n karakterinin olduğu kısma (\nabız) gelince bir alt satıra geçer ve işleyişine devam eder. Aslında bizim yapmak istediğimiz olay, bilgisayarımızdaki bir dosyanın yolunu ekrana yazdırmaktı.

İşte bu durumda \n karakter dizisinin özel bir anlama geldiğini bilmiyorsak, yazdığımız uygulamaların beklenmedik sonuçlar vermesi kaçınılmaz olacaktır.

Bunun içinde bir senaryo düşünelim. Mesela bilgisayarınızdaki bir dosyayı open() fonksiyonu ile açmak istediniz ve dosya yolu olarak yukarda örnek verdiğim gibi bir isimlendirmeye sahipsiniz. Bu durumda yazdığınız program çalışmayacaktır. Ve çökmesine sebep olacaktır.

Bunun önüne geçebilmek için, dizin içindeki ters taksim işaretlerini çift kullanabilirsiniz. Böylece herhangi bir hataya sebebiyet vermemiş olacaktır.

Çift ters taksim kullanımı

Sekme (\t)

Tıpkı “n” karakterinde olduğu gibi, ters taksim işareti “t” harfinden önce gelirse, python için tab(sekme) anlamında bir özel karakter ortaya çıkmış olur.

Örnek vermek gerekirse, bir metin içinde bir sekmelik boşluk bırakmak için \t karakter dizinini kullanırız.

\t kaçış işareti kullanımı

Ekrana, bir kere tab sekmesine basılmış gibi( dört adet boşluk) alan oluşturur

Bu kaçış işaretini bilerek kullandığımızda işimize yarıyor, fakat gözden kaçırdığımızda yazdığımız uygulamanın işleyişini olumsuz yönde etkiliyor.

\n özel karakter dizisinde kullandığımız örneği kullanarak devam edelim.

'C:\nabız\tansiyon\hastalar.txt'

şeklinde bir tanımla yaptığımızda şöyle bir sonuç ile karşılaşırız.

\t kaçış işareti örnek

\n özel karakter dizisinde olduğu gibi, python işleyişine soldan sağa doğru kodları okuyarak ilerliyor, \n karakter dizisinin aslında yeni bir satıra geçiş yapması için değil farklı bir amaç için kullandığımızı bildirmek üzere ters taksim işaretini iki kez yazıyoruz, kodları okumaya devam ediyor, \t işaretini gördüğünde bunun yeni bir sekme için yazıldığını yorumlayıp bir sekme boşluk bırakarak geri kalan yazıyı aynen ekrana basıyor. [baglanti_yatay]

Bunun önüne geçmek için aynı \n kaçış dizininde kullandığımız gibi çift ters taksim kullanabiliriz. Böylece pythona bunun aslında bir sekme işareti olmadığını bildiririz

\t kaçış işareti örnek

Zil Sesi (\a)

Ters taksim işaretiyle başka bir harfin yanyana gelmesiyle oluşan özel bir karakter dizini de “a” harfidir. Bu iki karakter yan yana geldiğinde bip sesi çıkmasına sebep olur. [partner] [space]

Bunu denemek isteyebilirsiniz. Bu linux sistemlerde çalışmamaktadır. Her windows sisteminde de çalışmamaktadır. Bazı sürümlerde böyle bir etkiye sebep olmaktadır. [baglanti_kare][yazi_ici_goruntu]

Stringler ile çalışırken bunu da göz önünde bulundurmayı unutmayın.

Aynı Satır Başı (\r)

Alfabemizde kritik bir yeri bulunan ve sıkça cümle içinde kullandığımız bu harf ile ters taksimin yan yana gelmesiyle satır başı kaçış dizisi oluşur.

Bu kaçış dizisi çalıştığı zaman, bulunduğu yerden önce yazılan tüm karakterin üzerine, bulunduğu yerden sonraki karakterleri yazar. Hemen bir örnek yapalım

"Python\röğreniyorum"
\r kaçış dizini örnek

Python soldan başlayarak yazılan kodu yorumlamaya başlıyor, “python” yazısından sonra satır başına geri dönüyor ve “öğreniyorum” kelimesini yazıyor. Bir örnek daha yapalım.

"Öğreniyorum\rpython"
\r kaçış dizini örnek

Python soldan başlayarak tekrar yorumluyor, “\r” kaçız dizinine geldiğinde, kaçış dizininden sonraki kelime geldiğinde bunu olduğu gibi satırın başına yazıyor ve ilk kelimeden geriye kalan fazla karakterleri buna ekliyor. “Öğreniyorum” kelimesi 11 karakterden oluşur, “python” kelimesi 6 karakterden oluşur bu yüzden “öğreniyorum” kelimesinin altı karakteri yerine “python” yazıldı ve geriye kalan 4 karakter olduğumu gibi “python” kelimesine eklendi. Çıktı olarak bu garip kelime ile karşılaştık “pythonyorum” 🙂 [baglanti_kare]

İmleç Kaydırma (\b)

Bu kaçış dizisinin yaptığı görev, imleci bir karakter sola kaydırmaktır. Hemen örnek yapalım

"Kenan yaman"
\b kaçış dizini

Normal şartlarda “Kenan” ve “yaman” kelimeleri arasında bir boşluk ve boşluktan sonra “\b” kaçış dizinini kullandım. Çıkan sonuç iki kelimenin bitişik yazılmış hali. Bu kod yorumlanırken kaçış dizinine geldiğinde imleci bir karakter sola kaydırdı ve ekrana bu şekilde bir çıktı verdi.

Aynı örneği boşluk olmadan yazalım.

\b kaçıl dizini örnek

Bu sefer, kaçış dizinine geldiğinde imleç bir karakter sola kaydı ve “n” harfinin üzerine yazdı. Yani bir karakter silindi.

Bu kaçış dizinini bir çok kez yan yana yazarak istediğiniz kadar imleci sola kaydırabilirsiniz.

Küçük Unicode (\u)

Tehlikeli olan bir kaçış dizisine geldik. Öncelikle unicode nedir bunun tanımını yapalım

Unicode: Bilgisayar ekranında gördüğünüz tüm karakterlerin(harf, sayı, rakam, özel karakterler) özel numaralar ile benzersiz bir şekilde tanımlandığı bir sistemdir. Şuna benzetebiiriz, internet çıkışı olan her cihazın benzersiz bir mac adresi vardır. Bu sistemde onun gibi benzersiz ve her karakter için özel olarak üretilmiş olan kodlar.

Latin harflari için şu linke bakabilir, diğer harfler ve semboller için şu linke bakabilirsiniz

Python, ters taksim ve “u” karakterlerini yan yana gördüğün bir unicode karakter arar. Bulamadığında hata verir. Yazdığımız uygulamalarda bunu gözden kaçırırsak programın çökmesine sebep olabiliriz. Bir örnek yapalım.

Dosya konumu: C:\users\belgeler\python.pdf

Ekrana bu şekilde bir çıktı vermek istediğimizde python yorumlayıcısı soldan başlayarak kodu okur ve kaçış dizisi geldiğinde, sonraki karakterler içinde bir unicode arar. Bulamadığı takdirde hataya sebep olur.

Diğer kaçış dizilerinde olduğu gibi bu sorununda üstesinden gelmek için ters taksim işaretini çiftleyebilirsiniz.[baglanti_kare]

Büyük Unicode (\U)

Büyük harfle yazılan kaçış dizisi de aynı küçük harfle yazılan diğer kaçış dizisiyle aynı anlamı taşır. Aralarındaki tek fark, küçük unicode 4 karakterlik bir bir alan tutarken, büyük harf ile yazılan unicode sekiz karakterlik bir alan tutar.

“ı” karakterini yazmak için küçük unicode ile şöyle bir kod yazmamız gerekir.

'\u0131'

Büyük unicode da aynı karakteri yazmak için şunu kullanırız.

'\U00000131'

Uzun Ad (\N)

Unicode ile iligili bir başka kaçış dizisidir “N” harfi ile yazılan kaçış dizisidir.

Unicode sisteminde benzersiz bir kod olduğu gibi benzersiz bir uzun “ad” da kullanılır. “a” harfi için kullanılan benzersiz uzun ad şu şekildedir “LATIN SMALL LETTER A”

Yukarda verdiğim link üzerinden tüm harflerin uzun adlarına bakabilirsiniz.

Diğer unicode kaçış dizilerinde olduğu gibi, python bu kaçış dizinine geldiğinde herhangi bir uzun ad unicode tanımlaması görmezse, bir karşılık bulamadığı için hata verecektir. [goruntu_kare]

Onaltılı Karakter (\x)

Diğer kaçış dizilerinde olduğu gibi, ters taksim ile “x” harfi bir araya geldiğinde onaltılı (hexadecimal) sayma sistemi için bir kaçış dizisi üretir.

Onaltılı sayma sisteminde, unicode da olduğu gibi her harfin ve sayının bir karşılığı vardır. Bunu şöyle bir kod ile görebiliriz.

\x kaçış dizisi örnek

“k” harfi için onaltılı sistemin “\x6b” kullanılır. Tüm karakter ve sembollere bakmak için şu siteyi kullanabilirsiniz.


Son olarak bu kaçış dizilerinden daha pratik bir şekilde nasıl kurtulabileceğimizi göstermek istiyorum.

Eğer bir string içinde bu şekilde bir kaçış dizisi denk gelirse, stringin başına “r” harfi koyarsınız python bu kaçış dizilerini görmezden gelecektir. Bir örnek yapalım.

 print(r'C:\nabız\tansiyon\hastalar.txt')

Normal şartlarda yukarıdaki gibi bir örnek yapmak istediğimizde, \n ve \t kaçış dizilerini istemsizce kullanmış olacaktık fakat tırnak işaretinden önce kullandığımız tek bir “r” harfi ile bu kaçış dizilerini etkisizleştirmiş olduk.

Kaçış dizilerini etkisizleştirme

Kaçış dizilerini iyi kavramamız yazacağımız programların sağlığı açısından önemlidir. Bu karakterlerin nerede ve ne zaman karşımıza çıkacağını asla tahmin edemezsiniz.

Kaçış dizilerinin sonuna geldik. Hatasız ve problemsiz kod yazmanız dileğiyle…. 🙂

[partner] [space][baglanti_yatay]

Bunu paylaş:

  • Twitter
  • Facebook

İlgili

Bir Cevap Yazın Cevabı iptal et

Kategoriler

  • Django
  • Donanım
  • Genel
  • İngilizce
  • Konsol
  • Linux
  • Python
  • Tek Atımlık Bilgi
  • Uncategorized
  • Yazılım

Bloga e-posta ile abone ol

Diğer 4 aboneye katılın

  • EnglishEnglish

Django 3.0 ile blog geliştirme

Kişisel vpn kurulumu

kişisel vpn kurulumu

RSS Rss

  • Samsung np s3511 laptop fan temizliği, termal macun değişimi ve parça değişimi (RAM, HDD,Cd room,CPU ) 12 Ekim 2021
    Herkese merhaba, uzun zamandır bir laptop söküp bakım yapmamıştım. Eski bir arkadaşım laptopuında ısınma ve kapanma sorunları olduğunu söyledi. Bir hafta sonu misafirliğe giderek laptopa güzel bir temizlik yaptık. Temizlik yaparken yaptığım işlemleri resim çekerek görselleştirdim. Ben temizlik için laptopu söktüm fakat sadece temizlik yapmak dışında bu yazınında başlığında gördüğünüz gibi parça değişimi işlemleri içinde...
  • Linux işletim sisteminin yanına windows işletim sistemi nasıl kurulur ? [Dual boot] 28 Haziran 2021
    Herkese merhaba, bugün ki konumuz dual boot, bir başka değişle; bilgisayarınızda yüklü olan işletim sisteminin yanına bir başka işletim sistemi kurmak. Uzun yıllar Windows kullanmış bir birey olarak, yaklaşık 5-6 yıldır Linux tabanlı işletim sistemleri kullanıyorum. Uygulama geliştiricelerin kullanırken daha rahat hissetiği ve işletim sistemi üzerinde tam kontrole sahip olduğu bir işletim sistemi. Bunun yanı...
  • Docker nedir, Docker ile neler yapılır ? 14 Haziran 2021
    Herkese merhaba, sitemin temasını değiştirdim ve bir kaç bileşen eklemesi yaptım. Bri şeyi fark ettim, bir kaç yıldır blog yazıyorum fakat bloğumda arşiv kısmına baktığımda bir kaç ay hariç geri kalan aylarda neredeyse sadece bir adet yazı paylaşmışım. Düşünüyorum; ayda bir yazıdan fazla blog yazmış olmam gerekiyor. Ama gerçekte öyle değilmiş. Neyse, bu durum bloğun...
  • Linux uyku modları ve sorunları 22 Mayıs 2021
    Herkese merhaba, uzun zamandır blog yazamıyorum. İş değiştirme olsun yaşadığım sorunlar olsun bir türlü vakit ayırıp içerik hazırlayamadım. Kendi bilgisayarım üzerinde yaşadığım bir sorunu nasıl çözdüğümü yazarak başlamak istiyorum. Öncelikle hikayenin başına dönelim. Önceki yazılarımı okuyanlar bilir, askerden geldikten sonra yaptığım ilk iş bilgisayarıma format atmak oldu. Herşeye sıfırdan başladım. Buraya kadar bir problem yok...
  • WordPress, web sitenizde kritik bir hata oluştu! 3 Nisan 2021
    Herkese merhaba, uzun süredir içerik üretemedim ve fazla vakit ayıramadım buralara, yeterince vakit bulamadım işin açıkcası. Bulduğum ilk fırsatta bir iki yazı yazmak istedim. İlk yazım wordpress kullanan her kullanıcının başına gelebilecek türden bir hata. Bir gün web sitenize girmek istediniz ve karşınıza böyle bir ekran geldi. [goruntu_kare][goruntu_kare_amp] Siz en son bıraktığınızda siteniz güzel ve...
  • İnternette Kişisel Güvenlik 24 Ocak 2021
    Geçtiğimiz günlerde WhatsApp’ın güncellediği kişisel veri ilkesiyle ülkemizde büyük ses getird. Bununla birlikte telefonumuzda ya da bilgisayarımızda kullandığımız uygulamaların ne tür verileri sakladığını ve bu verileri ne amaçla kullandığını bilmek kişisel olarak güvenliğimizi artırmak için araştırmamız gereken konular arasına girdi. İnternet üzerinde yaptığımız her türlü araştırma ve web site ziyareti kayıt altına alınıyor bu bir...
  • Nasıl pasaport alınır ? detaylı anlatım 2021 5 Aralık 2020
    Dünyanın başına gelmeyen olayın kalmadığı 2020 yılının son ayındayız. Hastalıklar, doğal afetler, ölümler, patlamalar, çatlamalar envai çeşit sıkıntıyla yüzleştik, umarım 2021 yılı daha hurulu ve mutlu geçer tüm dünya ve bizim için. 2020 yılının son ayına girdiğimiz şu günlerde uzun süredir aklımda olan bir eylemi gerçekleştirdim ve pasaport aldım. Pasaport alırken yapılacak işlemleri ve pasaport...
  • Pythonanywhere üzerinde selenium kullanımı 5 Kasım 2020
    Python üzerinde veri kazıma yapmak isterseniz eğer muhakkak ismini duyup araştırmışsınızdır selenium modülünü. Selenium modülü ile kullanıcı taklit edilecek web sitesi üzerinde testler oluşturabilir ya da veri kazıma işlemleri yapabilirsiniz. Peki bu işlemleri herhangi bir ekrana sahip olmayan uzak sunucu üzerinde yapmak istersek nasıl gerçekleştireceğiz ? Hadi başlayalım. [baglanti_kare] [baglanti_kare][space] Python selenium modülü nedir ?...
  • Polylang eklentisi nedir ? WordPress sitesine çoklu dil ekleme nasıl yapılır ? 29 Ekim 2020
    Herkese merhaba, bir blog siteniz varsa ve sürekli yazılar yayınlayıp paylaşıyorsanız eğer bir süre sonra bu yazıları farklı diller içinde paylaşmak isteyebilirsiniz. Farklı dillerde yayın yaparak daha fazla kitelelere ulaşabilir ve Google adsense ya da farklı reklam gösterimlerini kullanarak daha fazla gelir elde edebilirsniz. Peki wordpress alt yapısı ile oluşturulmuş bir sitede çoklu dil eklemek...
  • HTTP Metodları nelerdir ? 26 Ekim 2020
    Bugün ki yazımda, gün içinde sıklıkla kullandığımız fakat arkaplanına pek dikkat etmediğimiz web site isteklerine bakacağız. Bilgisayar başına geçtiğimizde gerek iş için olsun gerekse bir araştırma için olsun bir çok web sitesini ziyaret ediyoruz, bu ziyaretlerimiz sırasında site ile iletişim kurmamız gereken durumlarda meydana geliyor. Peki bu iletişimin nasıl olduğunu hiç merak ettiniz mi ?...

Arşivler

  • Ekim 2021 (1)
  • Haziran 2021 (2)
  • Mayıs 2021 (1)
  • Nisan 2021 (1)
  • Ocak 2021 (1)
  • Aralık 2020 (1)
  • Kasım 2020 (1)
  • Ekim 2020 (4)
  • Eylül 2020 (1)
  • Mart 2020 (1)
  • Şubat 2020 (4)
  • Ocak 2020 (9)
  • Aralık 2019 (4)
  • Kasım 2019 (3)
  • Ekim 2019 (2)
  • Eylül 2019 (2)
  • Temmuz 2019 (2)
  • Nisan 2019 (1)
  • Aralık 2018 (2)
  • Kasım 2018 (2)
  • Ekim 2018 (1)
  • Eylül 2018 (1)
  • Ağustos 2018 (4)
  • Temmuz 2017 (2)

Etiketler

bios boot ayarları boot boot yapma django djangoda shell django türkçeye çevirme ftp bağlantı ingilizce kalıplar ingilizce nasıl pratik yapılır ingilizce pratik yapmak ingilizce zamanlar ingilizce öğreniyorum konsol dan ftp bağlanma konsoldan hız testi nasıl yapılır laptop fan temizliği linux internet hız testi linux pip kurulumu pip kullanım python modül kaldırma işlemi python modül yükleme python nasıl kurulur Python nedir python ortamı python pip kurulumu python sanal çalışma ortamı python speedtest cli rufus rufus ile boot yapma sanal çalışma ortamı sanal çalışma ortamı ve paket yükleme speedtest-cli speedtest.net speedtest cli kullanımı speedtest terminal ssh ile ftp bağlantı suspend to disk suspend to ram terminal üzerinden hız testi türkçe django virtual environment what is wordpress windows pip kurulum wordpress wordpress nedir çalışma ortamı

Blog İstatistikleri

  • 22.921 tıklama

Blog İstatistikleri

  • 22.921 Tıklama

DMCA.com Protection Status

© 2022 Kenan YAMAN | Powered by Minimalist Blog WordPress Theme
Go to mobile version