目录
一、Python字符串运算符介绍运用
下表实例变量 a 值为字符串 "Hello",b 变量值为 "Python":
操作符 | 描述 | 实例 | |||
+ | 字符串连接 | a + b 输出结果: HelloPython | |||
* | 重复输出字符串 | a*2 输出结果:HelloHello | |||
[] | 通过索引获取字符串中字符 | a[1] 输出结果 e | |||
[ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 | a[1:4] 输出结果 ell | |||
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | H' in a 输出结果 True | |||
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | M' not in a 输出结果 True | |||
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | print( r'\n') | |||
print( R'\n') | |||||
% | 格式字符串 |
#!/usr/bin/python3a="Hello"b="Python"print("a + b 输出结果:", a+b) print("a * 2 输出结果:", a*2) print("a[1] 输出结果:", a[1]) print("a[1:4] 输出结果:", a[1:4]) if( "H"ina) : print("H 在变量 a 中") else : print("H 不在变量 a 中") if( "M"notina) : print("M 不在变量 a 中") else : print("M 在变量 a 中") print (r'\n') print (R'\n')
二、字符串的操作
Python语言中包含字符串的以下几个基本操作:
- 字符串的索引
- 字符串的分片
- 字符串的合并
- 重复字符串
- 其他操作
1、字符串的索引与分片
索引,在Python语言中,字符串是一个有序字符的集合
。在一个字符串被创建之后,其中字符的相对位置就固定了。第一个字符的索引编号定义为0,第二个字符索引编号为1,以此类推。在Python语言中,对字符串可以进行正向索引和反向索引。下表直观表示了字符串中字符和其索引编号的对应关系:
字符串中的字符与索引编号对应的关系 | ||||
0 | 1 | 2 | 3 | 4 |
a | b | c | d | e |
-5 | -4 | -3 | -2 | -1 |
上表中,中间行表示的是字符串中的每个字符内容,上面行表示该字符串正向索引时的索引编号,下面行表示该字符串反向索引时的索引编号。
索引是对单个元素进行的操作,Python语言中字符串的索引是通过元素下标进行索引的。
>>>s='abcde'>>>s[1] "b">>>S[3] "d">>>s[4] "e"
上述代码中,字符串s的下标最大是4(从0开始)。
切片,使用Python语言的分片(slice)操作,来提取字符串中的子序列。
>>>s[1:3] "bc">>>s[1:] "bcde">>>s[-3:-1] "cd">>>s[:-1] "abcd">>>s1=s[:] "abcd">>>s1=s[:] >>>s1"abcde">>>s[::2] "ace">>>s[::-1] "edcba"
代码中:s[1:3]获取s中下标从1到3的子字符串;s[1:] 获取从下标为1到字符串末尾的元素;s[:-1]获取从开始开始到字符串末尾的元素。s[::2]下标从0开始,每隔一个字符取一个元素;s[::-1]实现对字符串的逆序操作。
2、Python里连接字符串
字符串的连接就是把两个或多个字符串连接成一个字符串。在连接字符串时,Python语言会为每个连接的字符串及新产生的字符串分配内存,增大不必要的内存开销。
(1)操作符(“+”) 方法:
>>>'py'+'th'+'on''python'>>>'python'+'is'+''+'easy''python is easy'
(2)Python语言使用符串格式化操作符(%)和join()方法这两种方式连接字符串
操作符(%) 方法
>>>'%s%s%s'%('py','th','on') 'python'>>>'%s%s%s'%('python','is','easy') 'python is easy'
join()方法
>>>".join(('py','th','on'))'python'>>>''.join(('python','is','easy')) 'python is easy'
3、Python修改字符串
在Python语言中,字符串属于不可变类型,不能修改或删除原字符串中的字符。
通过加号的连接方式
>>>s='python>>>s+'cool''pythoncool'
通过对原字符串切片再连接方式
>>>s='python'>>>'C'+s[1:] 'Cython'
replace()函数来修改字符串
>>>s='python'>>>s.replace('p','C') 'Cython'
replace()函数的功能是字符替换,如果要替换的源字符或字符串存在,且和待替换的目标字符或字符串不同,则返回值为重新创建的一个字符串对象;否则,返回原字符串对象。代码中用replace()函数把字符串s中的’p’替换为’C’。
4、其他操作
通过帮助函数可以查看字符串对象的操作方法。这些方法可以通过object.attribute的方式调用。
三、Python 字符串格式化
字符串格式化是对字符串的输出形式进行控制,使其按照开发者期望的方式输出。进行字符串格式化的方法主要分为三种:
- 符号格式化
- 函数格式化
- 字典格式化
1、符号格式化
符号格式化主要是使用“%+格式化符号”,及相应的格式化辅助符号的方式对字符串进行格式化。
符号 | 描述 |
%c | 格式化符字及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写 |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
符号 | 功能 |
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
2、函数格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
#!/usr/bin/python3print ("我叫 %s 今年 %d 岁!"% ('小明', 10))
以上实例输出结果:
我叫小明今年10岁!
3、字典格式化
在Python语言中,字典格式化是在左边的格式化字符串通过引用右边字典中的键来提取对应的值,实现格式化输出。
四、Python三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:
#!/usr/bin/python3para_str="""这是一个多行字符串的实例多行字符串可以使用制表符TAB ( \t )。也可以使用换行符 [ \n ]。"""print (para_str)
以上实例执行结果为:
这是一个多行字符串的实例多行字符串可以使用制表符TAB ( )。也可以使用换行符 [ ]。
五、Python 的字符串内建函数
Python 的字符串常用内建函数如下:
序号 | 方法及描述 |
1 | capitalize() |
将字符串的第一个字符转换为大写 | |
2 | center(width, fillchar) |
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 | |
3 | count(str, beg= 0,end=len(string)) |
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 | |
4 | bytes.decode(encoding="utf-8", errors="strict") |
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 | |
5 | encode(encoding='UTF-8',errors='strict') |
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' | |
6 | endswith(suffix, beg=0, end=len(string)) |
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. | |
7 | expandtabs(tabsize=8) |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 | |
8 | find(str, beg=0, end=len(string)) |
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 | |
9 | index(str, beg=0, end=len(string)) |
跟find()方法一样,只不过如果str不在字符串中会报一个异常。 | |
10 | isalnum() |
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False | |
11 | isalpha() |
如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False | |
12 | isdigit() |
如果字符串只包含数字则返回 True 否则返回 False.. | |
13 | islower() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | |
14 | isnumeric() |
如果字符串中只包含数字字符,则返回 True,否则返回 False | |
15 | isspace() |
如果字符串中只包含空白,则返回 True,否则返回 False. | |
16 | istitle() |
如果字符串是标题化的(见 title())则返回 True,否则返回 False | |
17 | isupper() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False | |
18 | join(seq) |
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 | |
19 | len(string) |
返回字符串长度 | |
20 | ljust(width[, fillchar]) |
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 | |
21 | lower() |
转换字符串中所有大写字符为小写. | |
22 | lstrip() |
截掉字符串左边的空格或指定字符。 | |
23 | maketrans() |
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 | |
24 | max(str) |
返回字符串 str 中最大的字母。 | |
25 | min(str) |
返回字符串 str 中最小的字母。 | |
26 | replace(old, new [, max]) |
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 | |
27 | rfind(str, beg=0,end=len(string)) |
类似于 find()函数,不过是从右边开始查找. | |
28 | rindex( str, beg=0, end=len(string)) |
类似于 index(),不过是从右边开始. | |
29 | rjust(width,[, fillchar]) |
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 | |
30 | rstrip() |
删除字符串末尾的空格或指定字符。 | |
31 | split(str="", num=string.count(str)) |
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 | |
32 | splitlines([keepends]) |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 | |
33 | startswith(substr, beg=0,end=len(string)) |
检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 | |
34 | strip([chars]) |
在字符串上执行 lstrip()和 rstrip() | |
35 | swapcase() |
将字符串中大写转换为小写,小写转换为大写 | |
36 | title() |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | |
37 | translate(table, deletechars="") |
根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 | |
38 | upper() |
转换字符串中的小写字母为大写 | |
39 | zfill (width) |
返回长度为 width 的字符串,原字符串右对齐,前面填充0 | |
40 | isdecimal() |
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |