1.字符串:str
1. 作用:
用来记录文本(文字)信息
2. 字符串的表示方法:
在非注释中,凡是用引号括起来的部分都是字符串
' ' 单引号 ''' ''' 三单引号
" " 双引号 """ """ 三双引号print()
3.空字符串的字面值表示方式
''
""
''''''
""""""
(注意:中间什么都没有,不是空格,空格算空格字符串)
4.单引号和双引号的区别:
单引号内的双引号不算结束符
双引号内的单引号不算结束符
5.三引号字符串:
作用:n = int(input('请输入行数:'))
三引号字符串的换行会自动转换为换行符'\n'print()
三引号内可以包含单引号和双引号
例如:
welcome to beijing\n I like python\n I am a student
直接回车换行:
"""welcome to beijing
I like python
I am a student"""
6.用转义序列代表特殊字符:
字符串字面值中,用字符反斜杠(\)后跟一些字符代表一个字符
字符串中的转义字符表:
\' 代表一个单引号
\\ 代表一个反斜杠\>>> hex(100)
\n 换行
\r 返回光标至行首
\f 换页
\t 水平制表符
\v 垂直制表符
\b 倒退
>>> print('abcd\bE')
abcE
\0 空字符,字符值0
>>> print('\0')
(打印出空白)
\0oo oo为两位八进制表示的字符
\xXX XX为两位十六进制表示的字符
\uXXXX Unicode16的十六进制表示的字符
\uXXXXXXXX Unicode32的十六进制表示的字符
(注意:UNICIDE16(65536个))
7.ASCII编码:
ASCII 字符表
$ man ascii
常用的ASCII编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
8.raw 字符串(原始字符串):
字面值格式:r '字符串内容 '(双引号,三引号都可以)
作用:
让转义字符无效
示例:
>>> string = 'C:\now'
>>> string
'C:\now'
>>> print(string)
C:
ow
>>> string = r'C:\now'
>>> string
'C:\\now'
>>> print(string)
C:\now
9.字符串的运算:
算术运算符: + += * *=
+ 用于字符串的拼接
* 用于生成重复的字符串
10.字符串的比较运算:
> < >= <= == !=
比较第一个子母的ASCII码
11.in / not in
in / not in 用于序列,字典,集合,字符串,用于判断某个值是存在于容器中,如果存在返回True,否则返回False
12.字符串的索引:
python字符串str是不可改变的字符序列
索引语法:
字符串[整数表达式]
说明:
python序列都可以用索引(index)来访问序列中的对象(元素)
python序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)- 1
python的反向索引是从-1开始的,-1代表最后print()一个,第一个是-len(s)
13.切片slice:
从字符串序列中取出相应的元素重新组成一个字符串序列
语法:
s[(开始索引b):(结束索引e)(:(步长s))]
注:小括号()括起来的部分代表可省略
语法说明:
开始索引是切片开始切下的位置0代表第一个
结束索引是切片的终止索引(但不包含终止点)
步长是切片每次获取完当前元素后移动的方向和偏移量
1)没有步长,相当于取值完后向右移动一个索引的位置(默认为1)
2)当步长为正数时,取正向切片:步长默认为1,开始索引默认为0,结束索引默认为len(s)
3)当步长为负数时,取反向切片,反向切片时,默认起始位置为最后一个元素,终止位置是第一个元素的前一个位置
注意这种情况:
>>> s = 'abcdefg'
>>> s[1:1]
''
>>> s[3:1]
''print()
>>> s = 'abcde'
>>> s[3::-2]
'db'
14.python3中常用的序列函数:
len(seq) 返回序列的长度
max(x) 返回序列最大值元素
min(x) 返回序列最小值元素
ord(c) 返回一个字符串的Unicode编码值
chr(i) 返回i这个值所对应的字符
例如:
print(ord('A')) # 65
print(chr(65)) # ’A'
15.整数转换成字符串函数:
hex(i) 将整数转换成为十六进制的字符串
oct(i) 将整数转换成八进制字符串
bin(i) 将整数转换成二进制字符串
>>> hex(100)
'0x64'
>>> oct(100)
'0o144'
>>> bin(100)
'0b1100100'
16.字符串的构造(创建)函数str
str(obj='') 将对象转换成字符串
示例:
s = 123
print(str(s) + '456') #123456
17.常用的字符串方法(mothod):
1.字符串方法的调用语法:
对象·方法名(方法传参)
注:
方法的调用属于表达式,通常可以返回一个值或None
示例:
'abc'.isalpha() # 正确
123.isalpha()
s.isdigit() 判断是否全是数字
s.isalpha() 字母,islower() 小写字母,isupper() 大写字母,isspace 空白字符
(空白字符是指空格、水平制表符、换行符等不可见字符)
s.center(width[,fill]) 将字符串居中,默认填充空格,fill用字符串的形式.s.center(20,'*')
s.count(s[start,[,end]]) 获取一个字符串中子串的个数(注意:end索引最后不包含的)
s.find(s[start,[end]]) 获取字符串中子串的索引,失败返回-1.
s.strip() 返回去掉空白字符的字符串(去掉左右两边的空白,中间不会去掉)
s.title() 返回每个英单词首字母大写的字符串
s.upper() 返回一个全大写的字符串
s.lower() 返回一个全小写的字符串
s.replace(old,new[,count]) 将字符串old用new代替,生成一个新的字符串
import string as st
return (st.capwords(string))一个英文句子首字母大写
2.格式化字符串:
作用:
生成一定格式的字符串
运算符:%
语法格式:
格式字符串 % 参数值
格式字符串 %(参数值1,参数值2)
3.format()方法:
1.format方法接受位置参数和关键字参数,二者传递一个叫做replacement字段。而这个replacement字段在字符串内由大括号{}表示
>>> "{0} love {1}.{2}".format("I","fishc","com")
'I love fishc.com'
# 以上是位置参数方法
>>> "{a} love {b}.{c}".format(a = 'I',b = 'fishc',c = 'com')
'I love fishc.com'
# 以上是关键字参数方法
>>> "{0} love {b}.{c}".format("I",b = 'fishc',c = 'com')
'I love fishc.com'
>>> "{a} love {b}.{0}".format(a = 'I',b = 'fishc','com')
File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
# 以上是位置参数和关键字参数综合使用,但是位置参数必须在关键字参数之前,否则会出错
2.如果要把大括号打印出来,只需在外面用大括号包起来即可,跟字符串的转义字符一样(要打印\,对他进行转义即可\\)
>>> "{{0}}".format("不打印")
'{0}'
位置参数“不打印”没有被输出,这是因为{0}的特殊功能被外层的大括号{}剥夺,因此没有字段可以输出。
注意:这并不会产生错误
3.format的格式化操作:
>>> "{0}:{1:.2f}".format('圆周率',3.1415926)
'圆周率:3.14'
# 位置参数1后面多了个冒号。在替换域中,冒号表示格式化符号的开始
# “.2”的意思是四舍五入到保留两位小数点,而f是浮点式
4.占位符(%)和类型码(d/s/f/x/o/g/e/%)之间的格式语法:
% [格式语法] 类型码
- 左对齐
+ 显示正号
0 补0
宽度(整数)
宽度·精度(整数)
例如: '%10d' % 123 # ' 123'
'%-10d' % 123 # '123 '
'%05d' % 123 # '00123'
'%7.3f' % 3.1415926 # '003.141'
占位符 [- + 0] [宽度·精度] 类型码
注意(以下这种用法)
s1 = input('>>>')
s2 = input('>>>')
s3 = input('>>>')
print('%20s' % s1)
print('%20s' % s2)
print('%20s' % s3) #总长宽度为20
m = max(len(s1),len(s2),len(s3))
print('最大值',m)
f = '%%%ds' % m #求以最长的为宽度(两个%代表一个%,%d代表m)
print(f%s1) #相当于'%ms' % s1(当然,直接这样写是错的)
print(f%s2)
print(f%s3)
18.字符串文本解析方法split 和 join
S.split(sep = None) 将字符串,使用sep作为分隔符分割S字符串,【返回分割后的字符串的列表】,当不给定参数时,用空白字符作为分隔符进行分割
S.join(iterable) 用可迭代对象中的字符串,返回一个中间用S进行分隔的【字符串】
例如:
s = 'Beijing is captital'
l = s.split(' ') # l = ['Beijing','is','captital']
s = '小张,20,100'
l = s.split(',') # l = ['小张',20,100]
l = ['aaa','bbb','ccc']
'-'.join(l) # 'aaa-bbb-ccc'
【序列】
-
序列:
列表、元组、字符串 -
共同点:
1.都可以通过索引得到每一个元素
2.默认索引值总是从0开始(支持负数)
3.可以通过分片的方法的得到一个范围内的元素的集合
4.有很多共同的操作符(重复操作费、拼接操作符、成员关系操作符)
统称为序列 -
序列常用的BIF(内建方法)
-
list([iterable])
list()方法用于把一个可迭代对象转换成列表 -
tuple([iterable])
tuple()方法用于把一个可迭代对象转换成元组 -
str(obj)
str()方法用于把obj对象转换成字符串 -
len(sub)
len()方法用于返回sub参数的长度 -
max(…)
返回序列或者参数集合中的最大值 -
min(…)
返回序列或者参数集合中的最小值 -
sum(iterable[,start])
sum方法用于返回序列iterable的总和,但sum()方法有一个参数
,如果设置该参数,表示从该值开始加起。
示例:>>>tuple = 1,2,3,4,5 >>>sum(tuple) 15 >>>sum(tuple,10) 25 # 10 + 1 + 2 + 3 + 4 +5
-
sorted(iterable,key=None,reverde=False)
sorted方法用于返回一个排序的列表。
注意;
sort()是实现列表的原地排序,而sorted()是返回一个排序后的新列表 -
reversed(sequence)
reversed()方法用于返回逆向迭代序列的值。
注意;
reverse()是列表的原地翻转,而reversed()是返回一个翻转后的迭代器对象>>> l = [1,3,5,7,9] >>> reversed(l) <list_reverseiterator object at 0x035E6090> >>> for i in reversed(l): print(i,end = ' ') 9 7 5 3 1
-
enumerate(iterable)
ennumerate()方法生成一个由二元组(就是元素个数为二的元组)构成的一个迭代对象
每个二元组是由可迭代参数的索引号及其对应的元素组成的。>>> s = 'Fishc' >>> for i in enumerate(s): print(i) (0, 'F') (1, 'i') (2, 's') (3, 'h') (4, 'c')
-
zip(iter [,iter2[…]])
zip()方法用于返回由各个可迭代参数共同组成的元组>>> s1 = [1,3,5,7,9] >>> s2 = 'Fishc' >>> for i in zip(s1,s2): print(i) (1, 'F') (3, 'i') (5, 's') (7, 'h') (9, 'c')