2016-03-21 28 views
3

Dize formatını, uzunluğun gerektiği gibi değişebildiğinden emin olmak için bir değişken kullanabilmem için nasıl ayarlayabilirim? Örneğin, ilk önce uzunluğun 10 olduğunu söyleyelim, sonra giriş değişiyor, sonra uzunluk 15 oluyor. Güncellenecek biçim dizesini nasıl alabilirim?Python 3'te dize biçiminde boşluklar nasıl ayarlanır

length = 0 
    for i in self.rows: 
     for j in i: 
      if len(j) > length: 
       length = len(j) 
    print('% length s') 

Açıkçası yukarıdaki sözdizimi yanlıştır ama bu işe almak için anlamaya olamaz.

+0

Girintinizi düzeltebilir misiniz? For döngüsü içinde yazdırmaya mı çalışıyorsunuz? –

+1

lütfen örnek giriş ve beklenen çıktıları gösteriniz. – wwii

+0

Neden "print (s)" kullanıyordunuz? Ne olursa olsun yazdıracaktır. –

cevap

4

kullanma str.format

>>> length = 20 
>>> string = "some string" 
>>> print('{1:>{0}}'.format(length, string)) 
     some string 
+0

Aw, ben sadece kendim buldum! ;-) –

+2

Python dize biçimlendirmesi için en iyi site https://pyformat.info/#string_pad_align –

0

Böyle ilan edebilir:

print('%20s'%'stuff') 

20 baskı dizesinde karakter sayısı olacaktır. Boşluktaki fazlalık. biçim dizesi oluşturmak için

>>> length = 20 
>>> string = "some string" 
>>> print("%*s" % (length, string)) 
     some string 

Ya bir biçim dizesi kullanın:

+0

uzunluk beyaz alan miktarını değiştirir, ne yazdırılır – uhexos

+0

Sadece yazdırdım . Eminim beyaz boşluk görüyorum. – armatita

+3

OP, zamanın uzunluğunu bilmeye bağlı olmayan bir biçim dizisi almaya çalışıyor. Uzunluğu değiştirebilmek istiyor ancak aynı format dizisini kullanıyor. tobias_k'un cevabı size fikir vermelidir. – zondo

2

Sen %*s kullanabilir ve başka bir parametre olarak length geçirebilirsiniz

>>> print(("%%%ds" % length) % string) 
     some string 
+0

Ayrıca str.format ile bunu yapmanın bir yolu var ama şu anda hatırlamıyorum ya da bulamıyorum ... –

+0

Cevabımı görün :) –

1

format yöntemi al konumsal argümanlar ile kombine edilmiş güzel anahtar kelime argümanlarını belirtir:

>>> s = 'my string' 
>>> length = 20 
>>> '{:>{length}s}'.format(s, length=length) 
'   my string'