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。
 
 
 
 

python笔记03:使用字符串的更多相关文章

  1. 我的Python笔记03

    摘要: 声明:本文整理借鉴金角大王的Python之路,Day3 - Python基础3,仅供本人学习使用!!!   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4 ...

  2. Python笔记(四)_字符串的方法

    字符串的方法 []表示该参数时可选的,start和end参数表示范围 count(sub[, start[, end]]) 返回sub在字符串里边出现的次数 find(sub[, start[, en ...

  3. Python笔记5(字符串)-20160921

    一.字符串常用方法 1.title():返回字符串的标题版本,即单词首字母大写其余字母小写 2.upper():返回字符串全部大写版本,lower()则返回字符串全部小写版本 >>> ...

  4. Python笔记 #03# Help!

    源:DataCamp datacamp 的 DAILY PRACTICE  + 日常收集. Functions Built-in functions Help! Multiple arguments ...

  5. python笔记03

    day03 一.今日内容: 1.整型 2.字符串 3.布尔类型 二.内容回顾和补充 脑图--xmind软件,processon 1.运算符补充(in.not in) value = "我是中 ...

  6. 【python学习笔记】3.字符串使用

    [python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...

  7. python笔记(2)--字符串

    一.字符串 字符串是不可变序列,具有序列的公共操作方法,具体操作见python笔记(1)--序列(列表 元组 range) 1.创建字符串 单引号:'Hello , I am Logan ! ' 双引 ...

  8. python笔记2-数据类型:字符串常用操作

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  9. python笔记(2)--字符串

    一.创建字符串 使用 '' , "" , ''' 和 """ 来创建字符串 var1 = 'hello, world' var2 = "ja ...

随机推荐

  1. P3709 大爷的字符串题

    题意 询问区间众数出现的次数 思路 唯有水题快人心 离散化+莫队 莫队一定要先加后减,有事会出错的 莫队维护区间众数: 维护两个数组,一个数组记录权值为x的出现次数,一个记录出现次数为x的数的个数 a ...

  2. 【文件readonly异常】异常退出编译文件,再次进入提示readonly

    1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时,会出现如下提醒: 这是由于已经打开但未闭关的文件,会在其目录下出现一个.swp的文件,由于是属于隐藏文件,可以用命令l.  ...

  3. HDU 6121 Build a tree(完全K叉树)

    http://acm.hdu.edu.cn/showproblem.php?pid=6121 题意:给你一颗完全K叉树,求出每棵子树的节点个数的异或和. 思路: 首先需要了解一些关于完全K叉树或满K叉 ...

  4. windows 模拟用户会话创建进程

    在渗透当中,经常会碰到这样的问题.一个机器,机器上好几个用户,或者域内,想让某个机器的某个会话执行你想要执行的程序,或者中马,以当前会话来上线. 现在模拟如下的一个情况: 严格的DMZ,内网--> ...

  5. Linux——文件搜索命令简单笔记

    一: 命令名称:which 命令所在路径:/usr/bin/which 执行权限:所有用户 功能描述:显示系统命令所在目录 范例:$ which ls 还有一个whereeis ls 命令 二: 命令 ...

  6. C++ 在容器A中查找最后出现的容器B中的元素,并返回iterator(find_end)

    #include <iostream> // cout #include <algorithm> // find_end #include <vector> // ...

  7. Jmeter 中多线程并发和循环控制器

    今天遇到一个场景, 给一个手机号发送短信验证码,通过正确输入短信验证码即登录并获得token,进行其他操作. 短信验证码是4位,即9999个组合, 接口没有对验证次数做校验,所以可以一直一直尝试通过验 ...

  8. Spring 事物机制总结

    Spring两种事物处理机制,一是声明式事务,二是编程式事务 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...

  9. python - 面向对象编程(初级篇)

    写了这么多python 代码,也常用的类和对象,这里准备系统的对python的面向对象编程做以下介绍. 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) ...

  10. iconfont使用方法

    最近才发现一种新的iconfont的使用方法 http://www.iconfont.cn/ 经常使用的图标放在一个项目里 需要关注的几点: 使用方法有三种方式unicode  , font clas ...