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

时间:2012-08-12 10:54:57

标签: python string formatting

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

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

4 个答案:

答案 0 :(得分:24)

我不会使用%格式,.format有很多优点。此外,%格式化最初计划在.format替换{@ 1}}时删除,但显然实际上并未发生这种情况。

  

内置字符串格式化操作的新系统取代了%字符串格式化操作符。 (但是,仍然支持%运算符;它将在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'

答案 1 :(得分:11)

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

这是另一种不使用格式的方法。

答案 2 :(得分:3)

这也有效:

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

或更短,没有明确的类型转换:

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

答案 3 :(得分:1)

99%的可能你应该使用.format()

这不太可能,但如果你有一系列的问候,你可以试试这个:

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