2013-08-27 38 views
3

我知道有两种方法可以格式化字符串:插入字符串变量为打印在python

  1. print 'Hi {}'.format(name)
  2. print 'Hi %s' % name

什么使用的是相对DIS /优势?

我也知道,这两个可以有效地处理像

print 'Hi %s you have %d cars' % (name, num_cars) 

print 'Hi {0} and {1}'.format('Nick', 'Joe') 
+0

的可能重复[Python字符串格式:%比.format(http://stackoverflow.com/questions/5082452/python-string-formatting-vs-format) – alecxe

+0

有尚未另一种可能会让你感兴趣的方法是使用['string.Template'](http://docs.python.org/2/library/string.html?highlight=template#string.Template)类。我发现这个语法比普通的'%'格式和大多数格式更具可读性。既然它是一个类,你也可以派生出你自己的专用子类。 – martineau

回答

1

多个参数是不是真的有两个字符串格式化的解决方案之间的任何差别。

{}通常被称为“新样式”,并且%s"old string formatting",但是old style formatting isn't going away any time soon

新样式格式不支持无处不在尚未虽然:

logger.debug("Message %s", 123) # Works 
logger.debug("Message {}", 123) # Does not work. 

尽管如此,我推荐使用.format。它更加功能齐全,但无论如何没有太大的区别。

这主要是个人品味的问题。

0

我使用“旧式”,所以我可以递归地用字符串构建字符串。考虑...

'%s%s%s' 

...这代表任何可能的字符串组合,你可以有。当我构建一个N尺寸输入的输出字符串时,上面的代码让我递归下去每个根并返回。

一个示例用法是我的搜索查询测试(质量保证)。从%s开始,我可以进行任何可能的查询。

/.02