字符串

一、转义字符

转义字符描述
\续写行
\\反斜杠符号
\'单引号
\"双引号
\b退格(Backspace)
\n换行
\t横向制表符
\r回车

二、不换行打印

1
2
3
print("pye", end = ' ')
print("pye")
print("pye", end = '###')

运行结果:

1
2
>>> pye pye
pye###

三、replace替换

1
2
3
4
a = "abcdefgx"
print(a)
a.replace('e', 'x')
print(a)

运行结果:

1
2
>>> abcdefgx
abcdxfge

四、切片slice操作

操作和说明示例结果
[:] 提取整个字符串"pyehzmzbrhtwgzm"[:]"pyehzmzbrhtwgzm"
[start:] 从start索引开始到结尾"pyehzmzbrhtwgzm"[8:]"rhtwgzm"
[:end] 从头开始到end-1"pyehzmzbrhtwgzm"[:8]"pyehzmzb"
[start:end] 从start到end"pyehzmzbrhtwgzm"[3:6]"hzm"
[start:end:step] 从start提取到end,步长是step"pyehzmzbrhtwgzm"[1:6:2]"yhm"
倒数三个"pyehzmzbrhtwgzm"[-3:]"gzm"
包头不包尾"pyehzmzbrhtwgzm"[-8:-3]"brhtq"
倒序"pyehzmzbrhtwgzm"[::-1]"mzgwthrbzmzheyp"

五、split()分割和join()合并

1
2
3
4
5
6
7
8
>>> a = "panjoel is a junior high school student"
>>> a.split(" ")
["panjoel","is","a","junior","high","school","student"]
>>> a.split("junior")
["panjoel is a "," high school student"]
>>> b = ["panjoel","is","a","junior","high","school","student"]
>>> "*".join(b)
"panjoel*is*a*junior*high*school*student"

六、字符串驻留机制和字符串比较

6.1 字符串驻留机制:

对于符合标识符规则的字符串(仅包含下划线,字母,数字),会启用字符串驻留机制。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> a = "abd_33"
>>> b = "abd_33"
>>> a is b
True
>>> c = "dd#"
>>> d = "dd#"
>>> c is d
False
>>> str1 = "aa"
>>> str2 = "bb"
>>> str1 + str2 is "aabb"
False
>>> str1 + str2 == "aabb"
True

6.2 字符串比较和统一性:

== , != 比较的是对象的字符

is , no 比较的是对象的地址

6.3 成员操作符:

in , no 判断成员是否在字符串中

七、字符串常用方法

7.1 常用查找方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> a = "潘约尔和潘约西是兄弟,潘约尔是初中学生,而潘约西是高中学生。"
>>> len(a) #长度
29
>>> a.startswith("潘约尔和潘约西") #以指定字符串开头
True
>>> a.endswith("潘约西是高中学生。") #以指定字符串结尾
True
>>> a.find("潘") #第一个出现的字符
1
>>> a.rfind("潘") #最后一个出现的字符
23
>>> a.count("潘") #计数
4
>>> a.isalnum() #所有字符都是字母或数字
False

7.2 去除首尾信息

1
2
3
4
5
6
7
8
9
>>> a = "*pyx*is*senior high school student*"
>>> a.strip("*")
"pyx*is*senior high school student"
>>> a.rstrip("*")
"*pyx*is*senior high school student"
>>> a.lstrip("*")
"pyx*is*senior high school student*"
>>> " pyx ".strip()
"pyx"

7.3 大小写转换

1
2
3
4
5
6
7
8
9
10
11
>>> a = "pye extraordinarily love coding, ardently love programming."
>>> a.capitalize() #开头大写
"Pye extraordinarily love coding, ardently love programming."
>>> a.title() #各个单词首字母大写
"Pye Extraordinarily Love Coding, Ardently Love Programming."
>>> a.upper() #全大写
"PYE EXTRAORDINARILY LOVE CODING, ARDENTLY LOVE PROGRAMMING."
>>> a.lower() #全小写
"pye extraordinarily love coding, ardently love programming."
>>> a.swapcase() #交换大小写
"PYE EXTRAORDINARILY LOVE CODING, ARDENTLY LOVE PROGRAMMING."

7.4 格式排版

1
2
3
4
5
6
7
>>> a = "PYE"
>>> a.center(10,"*")
"***PYE****"
>>> a.center(10)
" PYE "
>>> a.ljust(10,"*")
"PYE*******"

7.5 其他方法

1
2
3
4
5
6
7
8
9
10
11
isalnum( )     #是否为字母或数字

isalpha( ) #检测字符串是否只由字母组成(含汉字)。

isdigit( ) #检测字符串是否只由数字组成

isspace( ) #检测是否为空白符

isupper( ) #是否为大写字母

islower( ) #是否为小写字母

八、可变字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> import io
>>> s = "hello, pye"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x00000014E22F61F0>
>>> sio.getvalue()
"hello, pye"
>>> sio.seek(9) #移动到指定符号
9
>>> sio.write("x")
1
>>> sio.getvalue()
"hello, pyx"