簡體   English   中英

什么是避免在字符串中指定相同值的最pythonic方法

[英]What is the most pythonic way to avoid specifying the same value in a string

message = "hello %s , how are you %s, welcome %s"%("john","john","john")

什么是避免指定“john”3次而是指定一個短語的最pythonic方法。

我不會使用%格式, .format有很多優點。 此外, %格式化最初計划在.format替換它時被刪除,盡管顯然這實際上並沒有發生。

用於內置字符串格式化操作的新系統取代了%字符串格式化操作符。 (但是, %運算符仍然受支持;它將在Python 3.1中棄用,稍后將從語言中刪除。)閱讀PEP 3101以獲取完整的獨家新聞。

>>> "hello {name}, how are you {name}, welcome {name}".format(name='john')
'hello john, how are you john, welcome john'

我更喜歡第一種方式,因為它是顯式的,但這就是為什么.format優於%格式的原因

>>> "hello {0}, how are you {0}, welcome {0}".format('john')
'hello john, how are you john, welcome john'
"hello %(name)s , how are you %(name)s, welcome %(name)s" % {"name": "john"}
'hello john, how are you john, welcome john'

這是另一種不使用格式的方法。

這也有效:

"hello %s , how are you %s, welcome %s"%tuple(["john"]*3)

甚至更短,沒有明確的類型轉換:

"hello %s , how are you %s, welcome %s"%(("john",)*3)

99%的可能你應該使用.format()

這不太可能,但如果你有一系列的問候,你可以試試這個:

>>> greetings = ["hello", "how are you", "welcome"]
>>> ", ".join(" ".join((greet, "John")) for greet in greetings)
'hello John, how are you John, welcome John'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM