Python

2011-12-24 35 views
43

içinde boş değillerse birden fazla dizeye katılma Dört dizim var ve bunlardan herhangi biri boş olabilir. Onları aralarındaki boşluklarla bir dizeye eklemem gerekiyor. Ben kullanıyorsanız:Python

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4 

string1 boşsa sonucu yeni dize başında boş alandır. Ayrıca, string2 ve string3 boşsa üç boş alanım var.

Onlara ihtiyaç duymadığım zamanlarda boş alanlar olmadan bunları kolayca nasıl ekleyebilirim?

cevap

100
>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(filter(None, strings)) 
'foo bar moo' 

filter() çağrısında None kullanarak, tüm falsy unsurları ortadan kaldırır.

-2
strings = ['foo','','bar','moo'] 
' '.join([x for x in strings if x is not '']) 
'foo bar moo' 
+4

Daha iyi kullanmak '! =' Yerine 'değil. Çalışabilir, ama garanti edilmez. Ya da sadece x [x için x için x] 'yi kullanın. –

+5

** Asla **, her ikisi de aynı nesneler olup olmadığını kontrol etmek istemiyorsanız, tekli olmayanlar için 'kullanmayın! – ThiefMaster

9

Eğer dizeleri hiçbir lider/sondaki boşluğu olduğunu BİLİYOR varsa: Aksi

>>> strings = ['foo','','bar','moo'] 
>>> ' '.join(x for x in strings if x) 
'foo bar moo' 

:

>>> strings = ['foo ','',' bar', ' ', 'moo'] 
>>> ' '.join(x.strip() for x in strings if x.strip()) 
'foo bar moo' 

ve dizeleri olmayan herhangi lider/sondaki boşluğu varsa, Hala daha sıkı çalışman gerekebilir. Lütfen gerçekte sahip olduğunuz şeyi açıklığa kavuşturun.

+0

Dizeler giriş metin alanlarından gelir, böylece her şey mümkündür. Teşekkürler! – Goran