2010-07-14 59 views
3

我有類似:print "\n","|",id,"|",var1,"|",var2,"|",var3,"|",var4,"|"如何打印的變量的字符串,而不在Python空間

它打印與每個變量的空間。

| 1 | john | h | johnny | mba | 

我想是這樣的:

|1|john|h|johnny|mba| 

我有20個變量,我必須打印,我恨他們中的每一個使用sys.stdout.write函數(VAR)。謝謝Pythonistas!

回答

6

嘗試使用join

print "\n"+'|'.join([id,var1,var2,var3,var4]) 

,或者如果變量是不是字符串:

print "\n"+'|'.join(map(str,[id,var1,var2,var3,var4])) 

這種方法的好處是,你不必建立一個長格式字符串並且它對於任意數量的變量基本上不變。

5
print "\n|%s|%s|%s|%s" % (id,var1,var2,var3,var4) 

看看String Formatting

編輯:加入其他答案更好。 Join期望字符串。

+1

'%s'可以與任何對象一起使用,而不僅僅是字符串 - '「%s +%s」%(1,2)==「1 + 2」'。除非您希望代碼爲非數字輸入引發異常,否則不必使用'%d'。 – 2010-07-14 20:04:09

+0

已修復。謝謝。 – user389875 2010-07-14 20:07:11

+0

當然%s不會產生非常有用的輸出,除非實現__str__或__repr__' – 2010-07-14 20:10:14

7

用於值的可變數目:

print '|%s|' % '|'.join(str(x) for x in [id, var1, var2, var3, var4]) 
+0

print'|%s |' %'|'.join(map(str,[id,var1,var2,var3,var4]))看起來更好(如果你有很大的數組,你可以使用imap來代替)。 – 2010-07-14 20:29:44

+0

@Tomasz:你這麼認爲?我認爲Pythonistas通常認爲生成器更清晰... – 2010-07-14 20:42:56

+0

你可能是對的。但在這種方法中,地圖接縫是無用的。 – 2010-07-15 06:35:43

2

如果正在使用Python 2.6或更新,用於格式化的字符串的新標準,該方法str.format:

print "\n{0}|{1}|{2}|".format(id,var1,var2) 

link text

+1

如果你有Python 2.7或更新版本,你甚至可以刪除數字:''\ n {} | {} | {} |「.format(id,var1,var2)' – 2010-07-14 20:05:25

相關問題