[转]Python的3种格式化字符串方法

本文转自: 夏日微风Python笔记

传统C语言式

命名参数
位置参数

1. 传统C语言式

和c语言里面的 sprintf 类似,参数格式也一样

title = "world"
year = 2013
print "hello %s, %10d" % (title, year)
这种方式有一个陷阱,比如 title 是一个list,执行语句 "hello %s" % title,会触发一个异常;正确的做法是先把 title 转换为 string,或用 string.format

2. 命名参数

title = "world"
year = 2013
print "hello %(title)s, %(year)10d" % {"title":title, "year":year}
string.format 也支持命名参数:

"hello {title}, {year}".format(title=title, year=year)
"hello {title}, {year}".format(**{"title":title, "year":year})
string.format还有一个地方需要注意,如果参数是unicode,则string也必须是unicode,否则,会触发异常。如执行下述语句会出错:

title = u"标题党"
"hello {0}".format(title)

3. 位置参数

title = "world"
year = 2013
print "hello {0}, {1}".format(title, year)

print "today is {0:%Y-%m-%d}".format(datetime.datetime.now())
总结

string.format 比 % 格式化方式更优雅,不容易出错

参考

% 格式详解:http://docs.python.org/2/library/stdtypes.html#string-formatting-operations
string.format 语法详解:http://docs.python.org/2/library/string.html#format-string-syntax
string.format 例子:http://docs.python.org/2/library/string.html#formatexamples

posted @ 2017-09-30 15:45  bingo彬哥  阅读(278)  评论(0编辑  收藏  举报
本站总访问量