2013-03-12 242 views
2

當整數轉換爲字符串我知道,在Python中,你不能簡單地這樣做:如何避免連接

number = 1 
print "hello number " + number 

你必須這樣做:

print "hello number " + str(number) 

否則你」會發生錯誤。

我的問題是那麼,被蟒蛇這樣一個簡潔的語言,和/自動注入的這項功能從整數轉換爲在其他許多語言的字符串,是不存在的地方,避免不必使用str()功能每次?一些模糊的導入,或者只是另一種方式來做到這一點?

編輯︰當我說另一種方式,我的意思是更簡單,更緊湊的方式來寫它。所以,我不會真的考慮format和替代方案。

謝謝。

+0

不是重複..我知道如何連接字符串。我問是否有辦法不必這樣做。 – nunos 2013-03-12 15:59:21

回答

2

我傾向於使用更緊湊的格式

>>> print "one",1,"two",2 
one 1 two 2 

或者,在Python 3,

>>> print("one",1,"two",2) 
one 1 two 2 

通知然而,這兩個選項將永遠介紹每個參數之間的空間,這使得它不適合對於更復雜的輸出格式,您應該使用其他一些解決方案。

4

你能避免str()

print 'hello number {}'.format(number) 

反正

'abc' + 123 

相當於

'abc'.__add__(123) 

和琴絃的__add__方法只接受字符串。

就像

123 + 'abc' 

相當於

(123).__add__('abc') 

和整數的__add__方法僅接受號(INT /浮動)。

+3

雖然這是更復雜的案件的正確方法,不會'打印「你好號碼,號碼'在這裏工作同樣好? – DSM 2013-03-12 15:21:59

+0

@DSM - 是的,它會的。 – eumiro 2013-03-12 15:22:39

+0

@DSM這是我正在尋找的答案興奮。考慮把它寫成答案,以便我可以接受它。謝謝。 – nunos 2013-03-12 16:04:11

4

您可以使用字符串格式化,old

print "hello number %s" % number 

new

​​
+1

請注意,這將調用引擎蓋下的str(至少我認爲)...與其他格式字符串相同。就像「%d」會調用int,%f將調用float – 2013-03-12 15:25:19

1

由於this答案解釋,這不會在Python發生,因爲它是強類型。這意味着Python不會轉換您沒有明確說出要轉換的類型。