Python中字符串
用转义序列代表特殊字符
字符串字面值中用字符反斜杠() 后跟一个或一些字符代表特殊的一个字符
转义格式 | 含义 |
---|---|
\’ | 单引号(’) |
\" | 双引号(") |
\\ | 一个反斜杠() |
\n | 换行符 |
\r | 返回光标至行首(回车符) |
\f | 换页 |
\t | 水平制表符 |
\v | 垂直制表符 |
\b | 倒退 |
\a | 响铃 |
\0 | 空字符(字符值为零) |
\0oo | oo为两位八进制表示的字符 |
\xXX | XX为两位十六进制表示的字符 |
\uXXXX | XXXX为四位十六进制表示的UNICODE16字符 |
\UXXXXXXXX | XXXXXXXX为八位十六进制表示的 |
ASCII编码表
Linux 查看方式:
$ man ascii
常用ASCII编码:
字符 | 十进制 | 十六进制 |
---|---|---|
‘0’ | 48 | 0x30 |
‘A’ | 65 | 0x41 |
‘a’ | 97 | 0x61 |
python3中字符串默认存储的是UNICODE编码值
0x0000 ~ (从0 开始)
raw 字符串(原始字符串)
格式:
r’字符串内容’
r"字符串内容"
r’’‘字符串内容’’’
r""“字符串内容”""
作用:
让转义符号 \ 无效
示例:
用字符串形成一个Windows下的路径:
C:\newfile\test.py
path = 'C:\newfile\test.py'
print(path)
path = r'C:\newfile\test.py'
print(path) # 打印: C:\newfile\test.py
字符串的运算
运算符:
- += * *=
+ 加号运算符用于拼接字符串
x = "abcd"
y = '1234'
z = x + y # 拼接
print(z)
a = y + x
print(a)
+= 运算符 用原字符串与右侧的字符串拼接生成新的字符串, 再用原变量绑定新的字符串
如:
x = 'abcd'
x += '123'
print(x) # abcd123
* 运算符 生成重复的字符串
如
x = "ABCD" * 3
print(x) # ABCDABCDABCD
y = 3 * "123"
print(y) # 123123123
注: 字符串只能和整数相乘
*= 运算符 生成重复的字符串,再用变量重新绑定
如
x = '123'
x *= 3 # 等同于 x = x * 3
print(x) # 123123123
字符串的比较运算
运算符:
< <= > >= == !=
-
规则:
-
依次按编码值进行两两比较,一旦不同,则比较结束,返回比
较结果,当编码值和长度完全相同时,两个字符串相等
示例:
'A' < 'B' # True
'ABC' > 'ABB' # True
'ADC' < 'ABC' # False
'ABC' >= '123' # True
'AD' >= 'ABC' # True
'AB' < 'ABC' # True
'ABC' < 'abc' # True
'abcd' != 'dcba' # True
in / not in 运算符
-
作用:
-
in 用于序列,字典,集合中,用于判断某个值是否存在于容器
中,如果存在则返回True,否则返回False
not in 写in 的返回结果相反
格式:
- 对象 in 序列
示例:
x = 'welcome to tarena!'
'to' in x # True
'hello' in x # False
'a' in x # True
字符串的索引操作
-
索引 index
- python 字符串是不可以改变的序列
语法:
字符串[整数表达式]
-
说明:
- python 序列都可以用索引(index) 访问序列中的元素
- python 序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
- python 序列的反向索引是从-1开始的,-1代表倒数第一个,-2 代表倒数第二个,以此类推, 第一个是-len(s)
示例:
s = 'ABCDE'
print(s[1]) # B
print(s[-1]) # E
-
切片 slice
-
-
作用:
- 从字符串序列中取出相应的元素重新组成一个字符串序列
语法:
s[(开始索引b):(结束索引e)(:(步长s))]
注: () 代表其中的内容可省略
-
说明:
-
-
开始索引是切片开始切下的位置,0代表第一个元素,与索引相同结束索引是切片的终止索引(不包含终止点)步长是切片每次获取完当前元素后移动的方向和偏移量
-
- 没有步长,相当于步长为1(默认值:1)
-
- 当步长为正整数时,取正向切片:开始索引默认为0,结束索引是最后一个元素的下一个位置
-
- 当步长为负整数时,取反向切片:反向切片时,默认的起始位置为最后一个元素,终止位置为第一个元素的前一个位置
示例:
- 当步长为负整数时,取反向切片:反向切片时,默认的起始位置为最后一个元素,终止位置为第一个元素的前一个位置
s = "ABCDE" a = s[1:4] # 'BCD' a = s[1:] # 'BCDE' 等同于 a = s[1:5] a = s[:4] # 'ABCD' 等同于 a = s[0:4] a = s[:2] # 'AB' a = s[1:1] # '' 空字符串 a = s[3:0] # '' 空字符串 a = s[0:5:2] # 'ACE' a = s[::2] # 'ACE a = s[4:1:-2] # 'EC' a = s[:1:-2] # 'EC' a = s[::-2] # 'ECA' a = s[::-1] # 'EDCBA'
-
``
运算符的优先级表
运算符 | 描述 |
---|---|
(), [], {key: value}, {} | 元组表达式、列表表达式、字典表达式、集合表达式 |
x[index], x[index:index],x(arguments…), x.attribute | 索引,切片,函数调用,属性引用 |
** | 指数 (最高优先级) |
~, +, - | 按位翻转, 正号,负号 |
*, /, %, // | 乘,除,取模和地板除 |
+, - | 加法, 减法 |
>>, << | 右移, 左移运算符 |
& | 位与(AND) |
^ | 位异或(XOR) |
| | 位或(OR) |
<=, <, >, >=, ==, !=,is, is not, in, not in | 比较,身份测试,成员资格测试 |
not | 布尔非 |
and | 布尔与 |
or | 布尔或 |
if - else | 条件表达式 |
lambda | lambda表达式 |
字符串序列相关的函数:
len(x) 返回序列的长度
max(x) 返回序列中最大值元素
min(x) 返回序列的最小值元素
字符串编码转换函数:
ord© 返回一个字符c的Unicode 编码值
chr(i) 返回i这个值对应的字符
整数转为字符串的函数
bin(i) 将整数转为二进制的字符串
oct(i) 将整数转为八进制的字符串
hex(i) 将整数转为十六进制的字符串
字符串的构造函数 str
str(obj=’’) 将对象转为字符串
python3 中常用的字符串方法:
方法调用语句:
对象.方法名(方法传参)
示例:
'abc'.isalpha() # 正确
123.isalpha() # 报错
字符串的常用方法
如下假设字符串变量名为S
常用字符串方法
方法 | 说明 |
---|---|
S.isdigit() | 判断字符串中的字符是否全为数字 |
S.isalpha() | 判断字符串是否全为英文字母 |
S.islower() | 判断字符串所有字符是否全为小写英文字母 |
S.isupper() | 判断字符串所有字符是否全为大写英文字母 |
S.isspace() | 判断字符串是否全为空白字符 |
S.center(width[,fill]) | 将原字符串居中,左右默认填充空格 |
S.count(sub[, start[,end]]) | 获取一个字符串中子串的个数 |
S.find(sub[, start[,end]]) | 获取字符串中子串sub的索引,失败返回-1 |
S.strip([chars]) | 返回去掉左右char字符的字符串(默认char为空白字符) |
S.lstrip([chars]) | 返回去掉左侧char字符的字符串(默认char为空白字符) |
S.rstrip([chars]) | 返回去掉右侧char字符的字符串(默认char为空白字符) |
S.upper() | 生成将英文转换为大写的字符串 |
S.lower() | 生成将英文转换为小写的字符串 |
S.replace(old, new[, count]) | 将原字符串的old用new代替,生成一个新的字符串 |
S.startswith(prefix[, start[, end]]) | 返回S是否是以prefix开头,如果以prefix开头返回True,否则返回False, |
S.endswith(suffix[, start[, end]]) | 返回S是否是以suffix结尾,如果以suffix结尾返回True,否则返回False |
以下是不常用的 | |
S.title() | 生成每个英文单词的首字母大写字符串 |
S.isnumeric() | 判断字符串是否全为数字字符 |
‘S{0}’.format(s0) | 字符串填充,{0}:表示填充format中的第s0个元素 |
空白字符 | 是指空格,水平制表符(\t),换行符(\n)等不可见的字符 |
字符串的格式化表达式
-
作用:
- 生成一定格式的字符串
运算符 %
语法格式:
格式化字符串 % 参数值
格式化字符串 % (参数值1, 参数值2, …)
示例:
>>> fmt = "name: %s, age:%d"
>>> n = 'tarena'
>>> a = 15
>>> result = fmt % (n, a) # result='name: tarena, age:15'
>>> s2 = '成绩: %d' % 100
>>> s3="name: {0}, age:{1}".format(tarena,15)
>>> s3
>>> name: tarena, age: 15
格式化字符串中的占位符和类型码
占位符和类型码 意义
%s 字符串,使用str(x) 函数转换
%r 字符串, 使用repr(x) 函数转换
%c 整数转为单个字符
%d 十进制整数
%o 八进制整数
%x 十六进制整数(字符a-f小写)
%X 十六进制整数(字符A-F大写)
%e 指数型浮点数 (e小写),如:2.9e+10
%E 指数型浮点数 (E大写),如:2.9E+10
%f,%F 浮点十进制形式
%g,%G 十进制形式浮点或指数浮点自动转换
%% 等同于一个%字符
占位符和类型码之间的格式化语法:
-
% [- + 0 宽度.精度] 类型码
-
说明:
- - : 表示左对齐(默认为右对齐)
- + : 表示显示正号
- 0 : 表示左侧空白位置补零
- 宽度 整数,整个数据输出的宽度(占用的字符数)
- 精度 整数,保留小数占后多少位(默认为6位)
示例:
"%d" % 123 # '123'
"%10d" % 123 # ' 123'
"%-10d" % 123 # '123 '
"%10s" % "ABC" # ' ABC'
"%010d" % 123 # '0000000123'
"%+010d" % 123 # '+000000123'
pi = 3.1415926535897932
"%f" % pi # '3.141593'
"%.10f" % pi # '3.1415926536'
"%7.2f" % pi # ' 3.14'