Python'da nasıl "sekme" yazarım?


127

Diyelim ki bir dosyam var. "Merhaba" SEKMESİ "alax" nasıl yazarım?


6
sekmesi '\ t' anlamına geliyor
Pratik

Yanıtlar:


154

Kod bu:

f = open(filename, 'w')
f.write("hello\talex")

\tDize içinde yatay çizelgesinden kaçış dizisidir.


5
Kullanılması print "a\tb"bana verir a (8 spaces)bde cmdtarihinde adlı Windows. Neden sekme karakteri yerine 8 boşluk basıyor?
Iulian Onofrei

Başka ne bekliyordun?
Simone

8
Görüntüleneceka (tab character)b
Iulian Onofrei

@IulianOnofrei Bir sekme karakteri, beyaz boşluk olarak da bilinen yazdırılmayan bir karakterdir. Sekme tuşuna bastığınızda hiçbir şey görmüyorsunuz. Metni varsayılan sayıda boşlukla taşır. Belki görünmesini istediğiniz karakterleri çizebilirsiniz. -> mı?
Rick Henderson

4
@RickHenderson Bu doğru değil, bir sekme karakteri sadece bir dizi boşluk değildir. Belki de Editörünüz sekmeye basıldığında boşluk bırakacak şekilde yapılandırılmıştır. "" bir sekmedir "" bir boşluktur. Burada farkı göremeyebilirsiniz, ancak Word / Libre'yi açın ve farkı göreceksiniz.
Sativa

27

Python başvuru kılavuzu , bir dizede kullanılabilen birkaç değişmez dize içerir. Bu özel karakter dizileri, kaçış dizisinin amaçlanan anlamı ile değiştirilir.

Burada daha kullanışlı bazı kaçış dizilerinin bir tablosu ve bunlardan elde edilen çıktıların bir açıklaması var.

Escape Sequence       Meaning
\t                    Tab
\\                    Inserts a back slash (\)
\'                    Inserts a single quote (')
\"                    Inserts a double quote (")
\n                    Inserts a ASCII Linefeed (a new line)

Temel Örnek

Bir sekme alanıyla ayrılmış bazı veri noktalarını yazdırmak istersem, bu dizeyi yazdırabilirim.

DataString = "0\t12\t24"
print (DataString)

İadeler

0    12    24

Liste Örneği

Liste öğelerini yazdırdığımız ve öğeleri bir TAB ile ayırmak istediğimiz başka bir örnek.

DataPoints = [0,12,24]
print (str(DataPoints[0]) + "\t" + str(DataPoints[1]) + "\t" + str(DataPoints[2]))

İadeler

0    12    24

Ham Dizeler

Ham dizelerin ("r" önekini içeren bir dize), dize değişmezlerinin yok sayılacağını unutmayın. Bu, bu özel karakter dizilerinin değiştirilmeden dizelere dahil edilmesini sağlar.

DataString = r"0\t12\t24"
print (DataString)

İadeler

0\t12\t24

Bu belki istenmeyen bir çıktı

Dize Uzunlukları

Dize değişmezlerinin yalnızca bir karakter uzunluğunda olduğu da unutulmamalıdır.

DataString = "0\t12\t24"
print (len(DataString))

İadeler

7

Ham dizenin uzunluğu 9'dur.


Öğelerimin arasında yaklaşık yarısı kadar bir boşluğa ihtiyacım var \t. Bunu nasıl yapabilirim?
seraluk

25

\ T'yi bir dize değişmezinde kullanabilirsiniz:

"hello\talex"


14

Genellikle \t, karakteri \tboşluk sekme karakterine dönüştüren komut satırı arayüzlerindedir .

Örneğin, hello\talex-> hello--->alex.


9

Herhangi bir cevapta bahsedilmediği gibi, metninizi hizalamak ve boşluk bırakmak istemeniz durumunda, dize formatı özelliklerini kullanabilirsiniz. (yukarıdaki python 2.5) Tabii ki \taslında bir TAB belirtecidir, oysa açıklanan yöntem boşluklar oluşturur.

Misal:

print "{0:30} {1}".format("hi", "yes")
> hi                             yes

Başka bir Örnek, sola hizalanmış:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 

3 boyutlu dizi elemanını 0 12 24 3 satır olarak yazdırmak için sekme karakteri nasıl verilir?
priya raj


0

İşte "merhaba" TAB "alex" elde etmenin bazı egzotik Python 3 yolları (Python 3.6.10 ile test edilmiştir):

"hello\N{TAB}alex"

"hello\N{tab}alex"

"hello\N{TaB}alex"

"hello\N{HT}alex"

"hello\N{CHARACTER TABULATION}alex"

"hello\N{HORIZONTAL TABULATION}alex"

"hello\x09alex"

"hello\u0009alex"

"hello\U00000009alex"

Aslında, bir kaçış dizisi kullanmak yerine, sekme sembolünü doğrudan dizge hazır bilgisine eklemek mümkündür. Kopyalamak ve denemek için bir tablo karakterine sahip kod:

"hello alex"

Yukarıdaki dizedeki sekme, dizeyi kopyalarken herhangi bir yerde kaybolmazsa, "print (repr (<dize yukarıdan>)" 'merhaba \ talex' yazmalıdır.

Referans için ilgili Python belgelerine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.