【Python】格式化字符串输出

一 简介
   python 字符串输出格式化有两种方式 %[s,d,] ,python 2.6 版本提供了string.format(),其功能也相当强大。talk is cheap,show me the code .
二 使用
2.1 参数映射
str.format 通过 {} 替换 字符串的 %,我们可以使用基于位置映射参数,基于下表,基于参数
比如 

  1. In [23]: print 'i am a %s,work at %s !' %('dba','youzan')
  2. i am a dba,work at youzan !
  3. In [24]: print 'i am a {0},work at {1} !'.format('dba','youzan')
  4. i am a dba,work at youzan !
  5. In [26]: print 'i am a {arg},work at {company} !'.format(arg='dba',company='youzan')
  6. i am a dba,work at youzan !
  7. format 不限制参数的调用次数
  8. In [28]: print 'i am a {0},work at {1},and {1} is  good at SAAS service !'.format('dba','youzan')
  9. i am a dba,work at youzan,and youzan is  good at SAAS service !

2.2 格式化输出
% 提供丰富的格式化输出,format当然也有同样的功能。
填充与对齐 
^ 居中
< 左对齐
> 右对齐 后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
具体的使用方式如下

  1. In [30]: fs='{:<8}'
  2. In [31]: fs.format('dba')
  3. Out[31]: 'dba '
  4. In [32]: fs='{:1<8}'
  5. ##左对齐
  6. In [33]: fs.format('dba')
  7. Out[33]: 'dba11111'
  8. #右对齐
  9. In [34]: fs='{:1>8}'
  10. In [35]: fs.format('dba')
  11. Out[35]: '11111dba'
  12. #居中
  13. In [36]: fs='{:1^8}'
  14. In [37]: fs.format('dba')
  15. Out[37]: '11dba111'

浮点数精度

  1. In [40]: fs='{:.3f}'
  2. In [41]: fs.format(3.14159265358)
  3. Out[41]: '3.142'

数字的进制

  1. b 分别是二进制
  2. d 十进制
  3. o 八进制
  4. x 十六进制。
  1. In [42]: ':b'.format(29)
  2. Out[42]: ':b'
  3. In [43]: '{:b}'.format(29)
  4. Out[43]: '11101'
  5. In [44]: '{:d}'.format(29)
  6. Out[44]: '29'
  7. In [45]: '{:x}'.format(29)
  8. Out[45]: '1d'
  9. In [46]: '{:o}'.format(29)
  10. Out[46]: '35'

用逗号 还能用来做金额的千位分隔符。

  1. In [47]: '{:,}'.format(2132323455)
  2. Out[47]: '2,132,323,455'

三 小结
  理论知识就介绍到这里了,如何在实际中运用呢?就交给给位读者朋友了。

时间: 2024-10-29 04:21:22

【Python】格式化字符串输出的相关文章

编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]

原文:编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串.实现浅拷贝和深拷贝.用dynamic来优化反射] 前言 本文已更新至http://www.cnblogs.com/aehyok/p/3624579.html .本文主要学习记录以下内容: 建议13.为类型输出格式化字符串 建议14.正确实现浅拷贝和深拷贝 建议15.使用dynamic来简化反射实现 建议13.为类型输出格式化字符串   有两种方法可以为类型提供格式化的字符串输出. 一种是意识到类型会产生格式化字符串输出,于是

python字典的格式化字符串中如果键值是个整数,格式化字符串中的括号内容怎么写?

问题描述 python字典的格式化字符串中如果键值是个整数,格式化字符串中的括号内容怎么写? 比如: test={'3':'hello', 3:99} "%(3)s" % test #输出的是'hello' 那我怎么格式化输出99呢? 解决方案 对于你这种方式,dict只支持字符串形式的key,对于int类型,你可以直接取取 "%d" % test[3] 解决方案二: 字典的格式化字符串字典:格式化字符串python字典的格式化字符串

Python中用format函数格式化字符串的用法_python

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱.语法 它通过{}和:来代替%. "映射"示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.for

Python常见格式化字符串方法小结【百分号与format方法】_python

本文实例讲述了Python常见格式化字符串方法.分享给大家供大家参考,具体如下: [方式一]百分号(%)方式,类C的printf,需要分别不同类型. 1.匿名tuple.(推荐在参数少时用) >>> '姓名:%s, 年龄:%d' % ('walker', 99) '姓名:walker, 年龄:99' 2.命名dict,字典的key可以重用. >>> '姓名:%(name)s, 年龄:%(age)d, 工龄:%(age)d' % {'name':'walker', 'ag

python判断字符串是否包含子字符串的方法

 这篇文章主要介绍了python判断字符串是否包含子字符串的方法,实例分析了Python中的in与find方法来实现这一功能,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了python判断字符串是否包含子字符串的方法.分享给大家供大家参考.具体如下: python的string对象没有contains方法,不用使用string.contains的方法判断是否包含子字符串,但是python有更简单的方法来替换contains函数. 方法1:使用 in 方法实现contains的功能

python过滤字符串中不属于指定集合中字符的类实例

  本文实例讲述了python过滤字符串中不属于指定集合中字符的类.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # -*- coding: utf-8 -*- import sets class Keeper(object): def __init__(self, keep): self.keep = sets.Set(map(ord, keep)) def __getitem__(self, n): if n

python实现字符串和日期相互转换的方法

  本文实例讲述了python实现字符串和日期相互转换的方法.分享给大家供大家参考.具体分析如下: 这里用的分别是time和datetime函数 ? 1 2 3 4 5 6 7 8 9 10 ''' @author: jiangqh ''' import time,datetime # date to str print time.strftime("%Y-%m-%d %X", time.localtime()) #str to date t = time.strptime("

Python新型字符串格式漏洞分析

前言 本文对Python引入的一种格式化字符串的新型语法的安全漏洞进行了深入的分析,并提供了相应的安全解决方案. 当我们对不可信的用户输入使用str.format的时候,将会带来安全隐患--对于这个问题,其实我早就知道了,但是直到今天我才真正意识到它的严重性.因为攻击者可以利用它来绕过Jinja2沙盒,这会造成严重的信息泄露问题.同时,我在本文最后部分为str.format提供了一个新的安全版本. 需要提醒的是,这是一个相当严重的安全隐患,这里之所以撰文介绍,是因为大多数人很可能不知道它是多么容

python读取文件输出乱码(不含中文),好心人帮帮忙

问题描述 python读取文件输出乱码(不含中文),好心人帮帮忙 data = '2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22'print ""data ="" dataprint type(data)james = data.strip().split('')print james 输出的是['2-34xefxbcx8c3xefxbcx9a21xefxbcx8c2.34xefxbcx8c2.45xefxbcx8c3.01