本地网站404错误,建立网站的优势,学校网站,如何用模板搭建网站本文主要由Python String Format 一文翻译整理而来#xff0c;在python中使用 % 进行格式化字符串由来已久#xff0c;不过在python2.7 的版本中引入了新的格式化字符串的方法。虽然%号的方式依旧可用#xff0c;不过在[PEP-3101] 中已有含蓄的警告称将完全淘汰python2.6之前…本文主要由Python String Format 一文翻译整理而来在python中使用 % 进行格式化字符串由来已久不过在python2.7 的版本中引入了新的格式化字符串的方法。虽然%号的方式依旧可用不过在[PEP-3101] 中已有含蓄的警告称将完全淘汰python2.6之前使用的这些方法。下面部分我们就来看下python2.7 的string format是怎样的。
一、格式字符串手册
数字格式化
下面的表格展示了使用Python的后起新秀str.format()格式化数字的多种方法包含浮点数格式化与整数格式化示例。可使用print(FORMAT.format(NUMBER));来运行示例因此你可以运行print({:.2f}.format(3.1415926));来得到第一个示例的输出。数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:.2f}3.14带符号保留小数点后两位
-1{:.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:02d}05数字补零 (填充左边, 宽度为2)
5{:x4d}5xxx数字补x (填充右边, 宽度为4)
10{:x4d}10xx数字补x (填充右边, 宽度为4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e09指数记法
13{:10d}13右对齐 (默认, 宽度为10)
13{:10d}13左对齐 (宽度为10)
13{:^10d}13中间对齐 (宽度为10)
二、string.format()基础
如下是两个基本字符串替换的示例符号{}是替换变量的占位符。若没有指定格式则直接将变量值作为字符串插入。s1 so much depends upon {}.format(a red wheel barrow)
s2 glazed with {} water beside the {} chickens.format(rain, white)
你也可以使用变量的位置数值在字符串中改变它们进行格式化时会更加灵活。如果搞错了顺序你可以轻易地修正而不需要打乱所有的变量。s1 {0} is better than {1} .format(emacs, vim)
s2 {1} is better than {0} .format(emacs, vim)
三、更老的格式字符串符号%
Python2.6之前格式字符串的使用方法相对更简单些虽然其能够接收的参数数量有限制。这些方法在Python3.3中仍然有效但已有含蓄的警告称将完全淘汰这些方法目前还没有明确的时间进度表。[PEP-3101]
格式化浮点数pi 3.14159
print( pi %1.2f , % pi)
多个替换值s1 cats
s2 dogs
s3 %s and %s living together % (s1, s2)
没有足够的参数
使用老的格式化方法我经常犯错TypeError: not enough arguments for formating
string因为我数错了替换变量的数量编写如下这样的代码很容易漏掉变量。set (%s, %s, %s, %s, %s, %s, %s, %s) % (a,b,c,d,e,f,g,h)
对于新的Python格式字符串可以使用编号的参数这样你就不需要统计有多少个参数。set ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) .format(a,b,c,d,e,f,g,h)
四、更多.format()的格式字符串方法
format()函数提供了相当多的附加特性和功能如下是一些有用的使用.format()的技巧。
命名参数
你可以将新的格式字符串用作模板引擎使用命名参数这样就不要求有严格的顺序。madlib I {verb} the {object} off the {place} .format(verbtook, objectcheese, placetable)I took the cheese off the table
多次复用同一个变量
使用%格式字符串要求变量有严格的次序而.format()方法允许如上所示那样任意排列参数也允许复用。str Oh {0}, {0}! wherefore art thou {0}?.format(Romeo)Oh Romeo, Romeo! wherefore art thou Romeo?
将数值转换为不同的进制
可以使用如下字母来将数字转换成字母代表的进制decimalhexoctal, binary。print({0:d} - {0:x} - {0:o} - {0:b} .format(21))21 - 15 - 25 -10101
将格式作为函数来使用
可以将.format()用作函数这就允许在代码中将普通文本和格式区分开来。例如你可以在程序的开头包含所有需要使用的格式然后在后面使用。这也是一种处理国际化的好方法国际化不仅要求不同的文本且常常要求不同的数字格式。
## 定义格式 email_f Your email address was {email}.format
### 在另一个地方使用 print(email_f(emailbobexample.com))
感谢 earthboundkid在reddit上提供这一技巧。
五、其他技巧
转义大括号
使用str.format()时若你需要使用大括号只要写两次就可以了
print( The {} set is often represented as { {0} } .format(empty))The empty set is often represented as {0}
六、参考资料