Python基础教程笔记——使用字符串
使用字符串
Table of Contents
[*]1 基本字符串操作
[*]2 字符串格式化:精简版
[*]2.1 用字符串格式化操作符
[*]2.2 用string的Template格式化字符串
[*]3 字符串格式化:完整版
[*]3.1 转换说明符
[*]3.2 简单转换
[*]3.3 字段宽度和精度
[*]3.4 符号,对齐和 0 填充
[*]4 字符串方法
[*]4.1 find
[*]4.2 join
[*]4.3 lower
[*]4.4 replace
[*]4.5 split
[*]4.6 strip
[*]4.7 translate
1 基本字符串操作
[*]说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;
[*]注意:字符串是不可变的,所以不能对其进行赋值;
[*]例子
1:>>> mystr="Test string"
2:>>> mystr = 't'
3:Traceback (most recent call last):
4:File "", line 1, in
5: mystr = 't'
6:TypeError: 'str' object does not support item assignment
7:>>>
2 字符串格式化:精简版
2.1 用字符串格式化操作符
[*]说明:字符串格式化使用字符串格式化操作符百分号( % )实现,在操作符的左侧是格式化字符串,右侧是希望被格式化的值;
[*]注意:
[*]只有元组和字典可以被格式化为一个以上的值,列表和其他序列会被格式化为一个值;
[*]转换说明符,用于标记需要插入转换值的位置;
[*]如果在格式化字符串中要输出百分号,则需要使用 %%
[*]例子:
1:#一般格式化
2:>>> myformat = "Hello, my name is %s %s"
3:>>> name = ('Bill','Gunn')
4:>>> print (myformat % name)
5:Hello, my name is Bill Gunn
6:>>>
7:
8:#用列表格式化
9:>>> myformat = 'Hello, my name is %s'
10:>>> name=['Bill', 'Gunn']
11:>>> print(myformat % name)
12:Hello, my name is ['Bill', 'Gunn']
13:
14:#打印浮点数
15:>>> import math
16:>>> print ("PI = %.5f" % pi)
17:PI = 3.14159
18:
19:#打印百分号
20:>>> print("%.2f%%"% 22.3)
21:22.30%
22:>>>
2.2 用string的Template格式化字符串
[*]说明:类似于Unix Shell中的变量替换,使用substitute方法,将字符串 模板中的$foo替换为传递进来的参数foo
[*]例子:
1:#从string模块中导入Template
2:>>> from string import Template
3:#创建模板
4:>>> myformat = Template("My name is $name")
5:#替换变量并打印
6:>>> print(myformat.substitute(name="Bill Gunn"))
7:My name is Bill Gunn
8:>>>
9:
10:#输出美元符号的方法,在模板里输入两个$
11:>>> mytemplate = Template("The price is $$$price")
12:>>> mytemplate.substitute(price=100)
13:'The price is $100'
14:>>>
15:
16:#如果参数与后面的字符串相连,需要用大括号将其括起来
17:>>> from string import Template
18:>>> mytemplate = Template("It's ${x}tastic!")
19:>>> mytemplate.substitute(x='slum')
20:"It's slumtastic!"
21:>>>
22:
23:#使用字典替换参数
24:>>> mytemplate = Template("My $property is $value")
25:>>> name = {}
26:>>> name["property"] = "name"
27:>>> name["value"] = "Bill Gunn"
28:>>> mytemplate.substitute(name)
29:'My name is Bill Gunn'
30:>>>
31:
3 字符串格式化:完整版
[*]说明:字符串格式化操作符的右操作数如果是元组,那么在格式化字符串 中必须将元组中的各个元素都有对应的转义说明符。
[*]例子:
1:>>> data = tuple(list("123"))
2:>>> data
3:('1', '2', '3')
4:#格式化字符串中只有一个转义说明符,而元组中有三个元素,转换会报错
5:>>> print ("data is %s" % data)
6:Traceback (most recent call last):
7: File "", line 1, in
8: print ("data is %s" % data)
9:TypeError: not all arguments converted during string formatting
10:#显示元组中的全部元素
11:>>> print ("data is %s %s %s" % data)
12:data is 1 2 3
13:>>>
14:
3.1 转换说明符
[*]转换说明符
转义说明符含义
d,i
带符号的十进制整数
o
不带符号的八进制
u
不带符号的十进制
x
不带符号的十六进制(小写)
X
不带符号的十六进制(大写)
e
科学计数法的浮点数(小写)
E
科学计数法的浮点数(大写)
f,F
十进制浮点数
g
如果指数大于-4或者小于精度值则和e相同,否则和f相同
G
如果指数大于-4或者小于精度值则和E相同,否则和F相同
C
单字符(接受整数或者单字符字符串)
r
字符串(使用repr转换任意Python对象)
s
字符串(使用str转换任意Python对象)
3.2 简单转换
[*]例子:
1:#十进制整数
2:>>> print ("The price is $%d" % 12)
3:The price is $12
4:
5:#十六进制整数
6:>>> print ("Hex %x" % 12)
7:Hex c
8:
9:#八进制整数
10:>>> print ("Oct %o" % 12)
11:Oct 14
12:>>>
13:
3.3 字段宽度和精度
[*]说明:
[*]字段宽度:转换后的值所保留的最小字符个数;
[*]字段精度:转换后,结果中应该的小数位数;
[*]可以使用*作为字段宽度或者精度
[*]例子:
1:#限制宽度
2:>>> "%10f" % math.pi
3:'3.141593'
4:
5:#限制小数位数
6:>>> "%5.2f" % math.pi
7:' 3.14'
8:
9:#用星号限制宽度和精度,下例中,宽度为10,精度为5
10:>>> '%*.*s' % (10, 5, 'adfasdfadsfasdfasdfasdf')
11:' adfas'
12:>>>
13:
3.4 符号,对齐和 0 填充
[*]说明:
[*]零:宽度不够时用数字0填充;
[*]负号:左对齐;
[*]正号:不管是正数还是负数都标记出符号
[*]空格:宽度不够时用空格填充;
[*]例子:
1:#空白补0
2:>>> print ("%010f" % math.pi)
3:003.141593
4:
5:#左对齐
6:>>> "%-10.2f" % math.pi
7:'3.14 '
8:
9:#空白右对齐
10:>>> print("% 5d\n% 5d" % (123, 12))
11: 123
12: 12
13:
14:#显示正负符号
15:>>> print ("%+5d\n%+5d" % (123, -123))
16: +123
17: -123
18:>>>
19:
4 字符串方法
4.1 find
[*]说明:用于在长字符串中查找子字符串,如果找到,则返回子字符串在左 侧第一次出现的索引,没找到返回-1,在查找时,还可以指定在长字符串 中查找的范围,提供起始索引和结束索引作为查找的参数;
[*]注意:查找时,包括起始索引位置,但是不包括结束索引的位置;
[*]例子:
1:>>> string.ascii_letters
2:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
3:>>> letters = string.ascii_letters
4:>>> letters.find('AB')
5:26
6:>>> letters.find('X',30,-1)
7:49
8:>>> letters.find("AB",26)
9:26
10:
4.2 join
[*]说明:将队列中的元素用字符串连接起来,并且列表中的元素必须是字符 串;
[*]例子:
1:>>> data = list('123456')
2:>>> data
3:['1', '2', '3', '4', '5', '6']
4:>>> "AB".join(data)
5:'1AB2AB3AB4AB5AB6'
6:>>>
7:
4.3 lower
[*]说明:将字符串转换成小写字母,并返回,但是原字符串不改变;
[*]例子:
1:>>> mystr="ABCD"
2:>>> mystr.lower()
3:'abcd'
4:>>> mystr
5:'ABCD'
6:>>>
7:
4.4 replace
[*]说明:返回所有匹配项都被替换之后的字符串
[*]例子:
1:>>> mystr = "My name is Geng Qi"
2:>>> mystr.replace("Geng Qi", "Bill Gunn")
3:'My name is Bill Gunn'
4:>>>
4.5 split
[*]说明:将字符串分割成序列;
[*]注意:如果不提供分割符,则会将空白符当作分割符;
[*]例子
1:#以加号为分割符
2:>>> mystr = "1+2+3+4+5+6"
3:>>> mystr.split('+')
4:['1', '2', '3', '4', '5', '6']
5:
6:#不提供分割符时,以空白符为分割符
7:>>> mystr = "This is a test string"
8:>>> mystr.split()
9:['This', 'is', 'a', 'test', 'string']
10:>>>
11:
4.6 strip
[*]说明:去除两侧的空白,也可以去除指定的字符;
[*]例子:
1:>>> mystr = " asdfad adfasf asdf "
2:>>> mystr
3:' \tasdfad adfasf asdf \t\t'
4:#去除空白符
5:>>> mystr.strip()
6:'asdfad adfasf asdf'
7:
8:#去除指定字符
9:>>> mystr.strip('\t')
10:' \tasdfad adfasf' asdf '
11:>>>
12:
4.7 translate
[*]说明:translate是单字替换,可以同时替换多个字符
[*]例子:
1:>>> table = str.maketrans('cs', 'kz')
2:>>> table
3:{115: 122, 99: 107}
4:>>> "Please don't knock at my door!".translate(table)
5:"Pleaze don't knokk at my door!"
6:
Date: 2011-11-15 23:24:43
Author:
Org version 7.7 with Emacs version 23
Validate XHTML 1.0
页:
[1]