作用:是用来记录文本信息
字符串是一个有序的字符序列
1 如何表示一个字符串
在非注释部分,凡是用引号括起来的部分全部是字符串
引号分类:
‘ 单引号
“ 双引号
“’ 三个单引号
“””三个双引号
字符串的表示方法:
‘’ , “”, “”” “”” , ‘’’‘’’’
2) 空字符串
3)非空字符串
4)单引号与双引号,三引号之间的区别
a 单引号内的双引号不算结束符
b 双引号内的单引号不算结束符
c 三引号也叫所见即所得字符串,字符串的换行直接记录在字符串的内部
2隐式字符串
示例:
s =“I’m”(空格)‘a teacher’(空格)’Name:”mz”’
3用转义序列代表特殊字符
字符串常量中用字符反斜杠\后跟一些字符代表特定含义的字符
\’ 单引号
\” 双引号
\n换行符
\a响铃
\\一个反斜杠字符
\r将光标移至行首
\f换页字符
\t水平制表符 多按几个,可以多空几格
\v 垂直制表符
\b 退格
\0 字符零
\xXX十六进制表示
\uXXXX Unicode16位的十六进制表示
\uXXXXXXXX unicode32位的十六进制表示
4 常用ASCII编码(记忆)
字符 十进制 十六进制
‘0’ 48 0x31
‘A’ 65 0x41
‘a’ 97 0x61
5 row 字符串(原始字符串)
格式:r’c:\\windows\\system32’ #’c:\\windows\\system32’
作用:将字符串内的反斜杠不做为转义字符
6 序列相关的字符串函数
len(seq) 用于获取字符串序列的长度
(长度是指字节数) 示例: len(“ABCD”) #4
max(seq) 用于获取字符串中unicode编码最大的一个字符
示例:max(Aanv12) #v
min(seq) 用于获取字符串中unicode编码最小的一个字符
7 字符串代码的转换函数
ord(str)返回一个字符串的ASCII的值
chr(i) 返回i这个数值所对应的字符
8 数字转换为字符串的函数
hex(x) 将整数转换成16进制的字符串
oct(x) 将整数转换成8进制的字符串
bin(x) 将整数转换成2进制的字符串
9 将字符串转换为核心类型
int(str,base=0)
float(str)
bool(str)
complex(str)
10 将对象转换为字符串类型str函数
str(x)
11 字符串的运算
+,+=,*,*=
这些运算都将产生新的字符串
12 in /not in 运算符
作用:in / not in 用于序列,字典,集合中;目的是用来判断某个值是否在其中
in 后面要是一个容器的
语法:x in s(s为序列,字典,集合)
13 字符串比较运算
> ,>= , < , <= , == , !=
挨个比较unicode编码,第一个为True,则以后不比较
既比较长度,又比较内容,内容在先
示例:
>>> "hongshui">'洪水'
False
>>> ' '<'a'
True
>>> ''<'a'
True
>>> ''<'1'
True
14 所有运算符优先级比较
运算符 | 描述 |
** | 幂运算 |
~,+,- | 取反 正号,负号 |
*,/,%,// | 乘法,除法,求余,地板除 |
+,- | 加,减 |
<<,>> | 左位移,右位移 |
&,| | 位与,位或 |
^ | 位异或 |
<,>,<=,>= | 小于,大于,小于等于,大于等于 |
==,!= | 相等,不等 |
= ,%=,/=,//=,-=,+=,*= | 赋值,求余等,除等,地板除等,减等,加等,乘等 |
is,is not | 身份运算符 |
in ,not in | 成员运算符 |
not,and,or | 布尔运算符(逻辑运算符) |
15 字符串的基本操作
索引 index:
切片 slice:
(1)索引
python语言中,可以用索引来访问序列中的对象,有正向索引,反向索引
a)正向索引
正向索引的范围:从左至右,0------->(length-1)
b)反向索引
负向索引的范围:从右之左,(-1)------->(-length
(2) 切片 slice
s[[开始索引]:[终止索引] [:步长]]
说明:开始索引,终止索引,步长均可省略
a)默认值
开始索引默认值为0
终止索引默认值为序列的length
步长默认值为 1
b)示例:
s =“ABCDEFG”
操作 | 结果 |
a=s[:] | a= “ABCDEFG” |
b=s[::] | b= “ABCDEFG” |
c=s[1:] | c=” BCDEFG” |
d=s[1::2] | d=”BDF” |
e=s[1:5:2] | e=”BD” |
f=s[1:5] | f=”BCDE”(不包含下标是5的) |
g=[::-1] | g=”GFEDCBA”;解释:下标有正有负,开始索引默认值为0,终止索引默认值是len(seq),则从0下标开始,步长为(-1),第一次截取出G(因为G的下标为(-1)或7) |
c)步长:
步长是每次切片获取完,当前元素后移动的方向和偏移量
1:没有步长,当前取值完成后,方向向右偏移一个位置
2:正数步长去正向切片
3:负数步长,取反向切片,默认开始位置为-1,结束索引为(-len(seq)-1)
16字符串常用的方法:
字符串属性的方法
对象.属性
对象.方法
以下s为字符串对象
方法 | 说明 |
s.lower() | 返回全小写字母 |
s.upper() | 返回全大写字母 |
s.title() | 返回因为每个词首字母大写 |
s.isdigit() | 判断是否是数字 |
s.isalpha() | 判断是否是英文 |
s.islower() | 判断是否全是小写字母 |
s.isupper() | 判断是否全是大写字母 |
s.strip() | 去掉左右两边的空格 |
s.lstrip() | 去掉左边的空格 |
s.rstrip() | 去掉右边的空格 |
s.count(sub[,start[,end]]) | 返回sub的个数,start是开始计数的起始位置,end为计数的终止位置(不包含) |
s.find(sub[,start[,end]]) | 返回sub第一次出现的位置,start是开始查找的开始位置,end是结束查找的位置(不包含) |
s.replace(old,new[,count]) | 返回替换后的字符串,old为被替换的字符串,new是替换字符串,count是要替换的个数 |
s.center(width[,fillchar]) | 把字符串放在width中间,并可以用fillchar填充 |
s.startswith(sub, beg=0,end=len(string)); | 判断字符串在beg到end之间是否以sub开头 |
s.endswith(suffix[, start[, end]]) | suffix -- 该参数可以是一个字符串或者是一个元素。 start -- 字符串中的开始位置。 end -- 字符中结束位置。 判断字符串在start和end之间是否以suffix结尾 |
format | 补充知识 |
字符串只能存储字符
字符串的文本解析方法:
S.split(sep=None) split()参数可以为空,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等 # split("?", 1)第一个参数是分隔符,第二个参数是分割次数 | 将字符串S分割为字符串列表 s = 'welcome to tarena' words = s.split(' ') # ['welcome', 'to', 'tarena']
|
S.join(iterable) 可迭代对象 | 将可迭代对象进行拼接,中间用字符串进行分隔 >>> s = 'hello' >>> '-'.join(s) 'h-e-l-l-o' |
17 字符串格式化表达式
1)作用
生成一定格式的字符串
2)语法:
格式化字符串 %参数值
或
格式化字符串 %(参数值1,参数值2,·······)
3)示例:
age=18
“heihei is %d years old” %age
# “heihei is 18 years old”
示例2
格式化的格式
>>> name = 'wmz'
>>> age=32
>>> s = 'name:%s,age:%d'%(name,age)
>>> s
'name:wmz,age:32'
name = 'amu'
age = 78
s='姓名,%s,年龄,%d'%(name,age)
print(s)
结果 年龄,amu,年龄,78
这个格式比较随意,只要前后的格式参数形同类型,相同个数就行
4)注意:
格式化字符串中的占位符的数量要等于参数的个数,否则会报错
5) 格式化字符串中的占位符
占位符 | 描述 |
%s | 字符串 |
%r | 机器读懂的字符串 |
%c | 整数转为单个字符(unicode编码) |
%d | 十进制 |
%o | 八进制 |
%x | 十六进制 |
%X | 十六进制大写 |
%e | 小写e指数型浮点数 |
%E | 大写E指数型浮点数 |
%f,%F | 浮点数十进制形式 |
%% | 等于% |
%g | 根据值的大小决定使用%f或者%e |
%G | 作用同%g,根据值的大小决定使用%F或者%E |
6) 占位符(%)与类型码(如d)之间的格式语法
width 宽度
格式 | 说明 | 示例 |
- | 左对齐 | “%-10d”%123 # “123 ” |
+ | 右对齐 | “%10d” %”ABC” # “ ABC” |
0 | 补零 | “%010d” %123 #” 0000000000123” |
width | 宽度 |
|
precision | 精度 | “%7.2d” %12356,987 “12356,99” |
7) 基于字典的字符串格式化:
第一种方式
“%(name)s 今年 %(age)d 岁了” %{‘name’:‘wmz’,‘age’:35)
“wmz 今年 35岁了”
第二种格式
d = {“a”:”nihao”,”b”:”hello”}
print(“%(a)s”,”%(b)s”%d)
结果:nihao,hello
18 补充知识
18.0 format的基础知识
format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。
1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型
2.单个参数可以多次输出,参数顺序可以不相同
3.填充方式十分灵活,对齐方式十分强大
4.官方推荐用的方式,%方式将会在后面的版本被淘汰
18.1 format方法
"{a} love {b}.{c}".format(a="I",b="FishC", c="com")
'I love FishC.com'