3.1 基本字符串操作:

所有的标准序列操作(索引,分片,乘法,判断成员资格,求长度,取最小值,取最大值)对于字符串同样有效。但是,请记住:字符串都是不可变的

3.2 字符串格式化:精简版

字符串格式化使用字符串格式化操作符,即百分号%来实现。
%也可以用做莫运算(求余)操作符。
在%的左侧放置一个字符串(格式化字符串),而右侧则放置希望被格式化的值。可以使用一个值,如一个字符串或者数字,也可以使用多个值的元组或者字典。一般情况下使用元组:
>>> format = "Hello,%s,%s enough for ya?"
>>> values = ('world','Hot')
>>> print format % values
Hello,world,Hot enough for ya?
注意:
1.如果使用列表或者其他序列代替元组,那么序列会被解释为一个值。只有元组和字典可以格式化一个以上的值。
2.格式化字符串的%s部分被称为转换说明符,他们标记了需要插入转换值的位置。s表示值会被格式化为字符串----如果不是字符串,则会用str将其转换为字符串。
3.如果要在格式化字符串里面包括百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了
4.如果要格式化实数(浮点数),可以使用f说明转换说明符的类型,同时提供所需要的精度:一个句点再加上希望保留的小数位数。因为格式化转换说明符总是以表示类型的字符结束,所以精度应该放在类型字符前面:
>>> format = "Pi with three decimals: %.3f"
>>> from math import pi
>>> print format % pi
Pi with three decimals: 3.142

3.2.1 模版字符串

string提供另一种格式化值的方法:模版字符串。它的工作方式类似于很多UNIX Shell中的变量替换。如下所示:
substitute这个模版方法会用传递进来的关键字foo替换字符串中的$foo:
>>> from string import Template
>>> s = Template('$x,glorious $x!')
>>> s.substitute(x='slurm')
'slurm,glorious slurm!'
如果替换的事单词的一部分,那么参数名就必须用括号括起来,从而准确指明结尾:
>>> s = Template("It's ${x}tastic")
>>> s.substitute(x='slurm')
"It's slurmtastic"
可以使用$$插入美元符号:
>>> s = Template("Make $$ selling $x!")
>>> s.substitute(x='slurm')
'Make $ selling slurm!'
除了关键字参数之外,还可以使用字典提供的键值对
>>> s = Template('A $thing must never $action.')
>>> d = {}
>>> d['thing'] = 'gentleman'
>>> d['action'] = 'show his socks'
>>> s.substitute(d)
'A gentleman must never show his socks.'
方法safe_substitute不会因缺少值或者不正确使用$字符而出错

3.3 字符串格式化:完整版

格式化操作符的右操作数可以是任意类型,如果是元组或映射类型(如字典),那么字符串格式化将有所不同。
如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个字都需要一个对应的转换说明符
如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以避免出错
>>> '%s plus %s equals %s' % (1,2,3)
'1 plus 2 equals 3'
>>> '%s plus % equals %s.' % 1,2,3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not enough arguments for format string

3.3.1 基本的转换说明符

基本的转换说明符包括以下部分。注意,这些项的顺序是至关重要的
1.%字符:标记转换说明符的开始
2.转换标志(可选):“-”表示左对齐;“+”表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
3.最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出
4.点(.)后跟精确度(可选):如果转换的时实数,精确度就表示出现在小数点后的位数,如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出
5.转换类型:如下所示
转换类型 含义
d,i 带符号的十进制整数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学技术法表示的浮点数(小写)
E 科学技术法表示的浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其他情况与e相同
G 如果指数大于-4或者小于精度值则和e相同,其他情况与E相同
C 单字符(接收整数或者单字符字符串)
r 字符串(使用repr转换任意python对象)
s 字符串(使用str转换任意python对象)

3.3.2 简单转换

简单的转换只需要写出转换类型,使用起来很简单:
>>> 'Price of eggs: %d' % 42
'Price of eggs: 42'
>>> 'Hexadecimal price of eggs: %x.' % 42
'Hexadecimal price of eggs: 2a.'
>>> from math import pi
>>> 'Pi: %f...' %pi
'Pi: 3.141593...'
>>> 'Pi: %f...' % pi
'Pi: 3.141593...'
>>> 'Very inexact estimate of pi: %i.' % pi
'Very inexact estimate of pi: 3.'
>>> 'Using str: %s.' % 42L
'Using str: 42.'
>>> 'Using repr: %r.' % 42L
'Using repr: 42L.'

3.3.3 字段宽度和精度

转换说明符可以包括字段宽度与精度。字段宽度是转换后的值会所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符串转换来说)是转换后的值所能包含的最大字符个数。
这两个参数都是整数(首先是字段宽度,然后是精度),通过点号(.)分隔。虽然两个都是可选的参数,但是如果只给出精度,就必须包含点号:
>>> '%10f ' % pi   #字段宽10
' 3.141593 '
>>> '%10.2f' % pi #字段宽10,精度2
' 3.14'
>>> '%.2f' % pi #精度2
'3.14'
>>> '%.5s' % 'Guido van Rossum'
'Guido'
可以使用*(星号)作为字段宽度或者精度(或两者都用*),此时数值会从元组参数中读出:
>>> '%.*s' % (5,'Guido van Rossum')
'Guido'

3.3.4 符号、对齐和用0填充

在字段宽度与精度之前还可以放置一个“标志”,该标志可以是零,加号,减号或空格。零表示数字将会用0进行填充。
 
注意:在010开头的那个0并不意味着字段宽度说明符为八进制数,他只是个普通的python数值。当使用010作为字段宽度说明符时,表示字段宽度为10,并且用0进行填充空位,而不是说字段宽度为8。
 
 
 
 

最新文章

  1. Wiki安装(PHP +Sqlite+Cache)
  2. Mac下使用firefoxdriver
  3. ThinkPHP3.2.2 Widget扩展以及widget demo实例
  4. C++拷贝构造函数(深拷贝,浅拷贝)
  5. VS2012给同一个解决方案添加多个项目
  6. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
  7. LDAP过滤器使用说明(用户、组和容器的默认 LDAP 过滤器和属性)
  8. 【UVa-679】小球下落——二叉树的编号
  9. Git教程之多人协作
  10. 编写可维护的JavaScript—语句和表达式&amp;变量、函数和运算符
  11. C#基础总结之Attribute
  12. 如何设置打开jsp页面速度加快?
  13. kmeans算法思想及其python实现
  14. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习1
  15. git的reset的理解
  16. Spring 无缝整合 quartz
  17. 编程学习笔记(第四篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(4)meta、元与元模型、软件方法的未来发展
  18. hdu 1226 超级密码
  19. 【转】设置Qt应用程序图标及应用程序名
  20. L221

热门文章

  1. HDU 1848 Fibonacci again and again(SG函数入门)题解
  2. hdu 6168 Numbers
  3. String中hashCode方法的线程安全
  4. Django部署生产环境,静态文件不能访问404,以及图片不能访问403
  5. 《Robot Framework自动化测试修炼宝典》道长
  6. MongoDB(课时4 数据增加)
  7. JavaScript权威指南--脚本化文档
  8. Codeforces 545D - Queue
  9. xhr文件类型说明
  10. 4-12 如何搜索API