【www.bbyears.com--python】
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 translate1 基本字符串操作
-
说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;
注意:字符串是不可变的,所以不能对其进行赋值;
例子
python"> 代码如下python">1: >>> mystr="Test string" 2: >>> mystr[0] = "t" 3: Traceback (most recent call last): 4: File "2 字符串格式化:精简版", line 1, in 5: mystr[0] = "t" 6: TypeError: "str" object does not support item assignment 7: >>>
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 "3.1 转换说明符", 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.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: