2016-04-12 21 views
1

Merhaba Bir listenin öğelerini bir dizeyle eşleştiren ve birleştiren bu işleve sahibim. Benim sorum şu ki listede orijinal olarak bulunan tüm elemanların etrafında tırnak işaretleri eklemenin bir yolu var.Liste python öğelerini biçimlendirme

def blahblahblah(input): 

    code = "result = %s\n" % (", ".join(map(str, input))) 
    print code 




    x = ["dasdad", 131] 
    blahblahblah(x) 

    //normal output ------result = dasdad, 131 
//desired output ------result = 'dasdad', 131 

cevap

2

Padraic 131 zaten oldukça iyi belirttiğiniz soruya cevap vardır, bu yüzden burada işini çoğaltmak olmaz. Bunun yerine, bir sıçrama yapacağım ve sorunuzu daha genel bir biçimde cevaplamaya çalışıyorum. Eğer biçimlendirilmiş çıktıda Python değişmezleri yeniden oluşturmaya çalışıyorsanız gibi


görünüyor. Dizeler ve sayılar gibi nesneler için, yerleşik repr işlevi bunu sizin için yapar.

>>> def blahblahblah(input): 
...  code = "result = %s\n" % (", ".join(map(repr, input))) # Map repr instead of str 
...  print code 
... 
>>> blahblahblah(["dasdad", 131]) 
result = 'dasdad', 131 

repr keşfetmek ve hata ayıklama için çok yönlü Python yerleşikleri biridir ve onun yarar kesinlikle dize biçimlendirme sınırlı değildir. Şimdiden aşina değilseniz, bunu kesinlikle yapmanızı öneriyorum!

2

Sen str.format ne istersen her elemanı sarma bağlanabilirler:

Yani listedeki her eleman çıktınıza tırnak bürünecek
def blahblahblah(inp): 
    code = "result = {}\n".format(", ".join(map("'{}'".format, inp))) 
    print code 

:

In [2]: x = ['dasdad', 131] 

In [3]: blahblahblah(x) 
result = 'dasdad', '131' 

Ya için sadece str türleri kullanın isinstance:

0 verir

:

In [5]: x = ["dasdad", 131] 

In [6]: blahblahblah(x) 
result = 'dasdad', 131 
+0

Bu, listenin her öğesinin etrafında alıntılar koyacaktır. Sadece ilk AFAIK'ın etrafında olmak istiyor. –

1

ilk dizesine tırnak işareti ekleyebilir. = "Dasdad"

x = [ "\"" + i +"\"" if isinstance(i,str) else i for i in x] 
code = "result = %s\n" % (", ".join(map(str, x))) 
print code 

sonuç,

print "result = %s\n" % (", ".join(map(str, ["\"" + i +"\"" if isinstance(i,str) else i for i in x]))) 
+0

İlk örnekte 'giriş'i' x 'olarak değiştirmeniz gerekir. – JRazor

+0

@JRazor değişti teşekkür ederim – galaxyan