python笔记03:使用字符串

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。

时间: 2024-10-08 09:53:09

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

Python笔记5(字符串)-20160921

一.字符串常用方法 1.title():返回字符串的标题版本,即单词首字母大写其余字母小写 2.upper():返回字符串全部大写版本,lower()则返回字符串全部小写版本 >>> s = "hello, world">>> s.upper()'HELLO, WORLD' 3.swapcase():返回字符串大小写交换的版本 >>> s = "abABCDEFabc">>> s.swapcas

python笔记03列表 字典

1.for,while循环遍历 2.添加元素 append 通过append可以向列表添加元素 #定义变量A,默认有3个元素 A = ['xiaoWang','xiaoZhang','xiaoHua'] print("-----添加之前,列表A的数据-----") for tempName in A: print(tempName) #提示.并添加元素 temp = input('请输入要添加的学生姓名:') A.append(temp) print("-----添加之后,列

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

python学习笔记2:字符串

python学习笔记2:字符串 总结:字符串是不可变变量,不能通过下标修改其值 字符串的方法都不会改变字符串原来的值,而是新生成一个字符串 一.3种写法--单引号,双引号,三引号 二.下标和切片 下标:字符串里每个字符所在的位置,也叫索引.strname[n] ,表示strname这个字符串的下标为n对应的字符的值. 切片:取字符串一个下标区间的值. strname[n:m],表示strname这个字符串,下标n到m这个区间内的值,注意n:m取值,顾前不顾后. 三.字符串遍历 in 和not i

python基础教程_学习笔记5:字符串

字符串 基本字符串操作 字符串也是序列,因此序列的基本操作(索引.分片.连接.乘法.长度.求最大值和最小值.成员资格)对字符串同样适用: 索引 >>> 'a_string'[0] 'a' 长度 >>> len('a_string') 8 求最大值 >>> max('a_string') 't' 求最小值 >>> min('a_string') '_' 乘法 >>> 'a_string'*2 'a_stringa_st

Python笔记004——字符串

字符串基本定义 1 字符串用引号引起来的(单引号,双引号,三双引号,三单引号) 三引号(三单或三双)支持多行,而单双引只能一行(但是可以加\n) 2 斜杠表转义(\",输出 “) 3 \b的含义 1 print('hello world') 2 print('hello world\bwujiadong')#删除前一个字符,后面字符往前进一个 [[email protected] ~]# python 1.py hello world hello worlwujiadong 字符串运算 加法运算

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a

Python笔记(四)

在<Python笔记(三)>中,我记录关于Python中序列问题的知识.个人觉得确实比Java中的集合框架简单.之前也说了,Python是一种高级面向对象的语言,它的每一个变量都称为对象.今天我接触了面向对象的编程.下面是这篇博客的目录: 1.类与对象 2.输入输出 3.异常 类与对象: 我们都知道面向对象的语言具备四个特性:抽象,继承,封装,多态.Java,C++是这样,Python也不例外.在Python中,我们定义一个类,使用关键字class.形式如下:class classname:.