Python编程语言下的字符串及编码
作用:用来记录文本(文字)信息
在非注释中,凡是用引号括起来的部分都是字符串
'单引号
"双引号
'''三单引号
"""三双引号
空字符串的字面值表示方式:
'"
'''
"""
非空字符串的字面值表示方式:
'hello'"hello"
'''hello'''
"""hello"""
单引号和双引号的区别:
单引号内的双引号不算结束符
双引号内的单引号不算结束符
例:print("i'm a teacher")
print('hello "tarena"')
print("我是'''三单引")
三引号字符串:
作用:
三引号字符串的换行会自动转化为换行符‘\n’
三引号内可以包含单引号和双引号
如何表示:
'welcome to beijing \nI like python!\nI am studing!'
例:s = '''welcome to beijing !
I like python!
I am studing!'''
用转义序列代表特殊字符:
字符串字面值中,用字符反斜杠(\)后跟一些字符代表一个字符
字符串中的转义字符表:
\' 代表一个单引号
\" 一个双引号
\\ 代表一个反斜杠
\n 换行
\r 返回光标至行首
\f 换页
\t 水平制表符
\v 垂直制表符
\b 倒退
\0 空字符,字符值为0
\0oo oo为两位八进制代表的字符
\xXX XX为两位十六进制代表的字符
\uXXXX unicode16的十六进制代表的字符
\uXXXXXXXX unicode32的十六进制代表的字符
ASCII编码
ASCII 字符表
$ man ascii
常用ASCII编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 ox41
'a' 97 0x61
raw字符串(原始字符串)
字面值格式:
r'字符串内容'
r"字符串内容"
r'''字符串内容'''
r"""字符串内容"""
作用:让转义字符\无效
示例:
a='C:\newfile\test.py'
print(a)
print(len(a)) #得到字符串的长度
a=r'C:\newfile\test.py'
print(a)
print(len(a))
字符串的运算:
算术运算符:
+ += * *=
+ 加号运算符用于字符串的拼接
例:x='abcd'+'efg'
print(x) #abcdefg
x += '123'
print(x) #abcdefg123
* 运算符用于生成重复的字符串
例:x='123'
y=x * 2 #y='123123 '
y=x *= 3 #y='123123123 '
·字符串只能和整数相乘
x=3
x *= '123' #x='123123123'
练习:写一个程序,打印一个高度为4的矩形方框,
要求输入一个整数,此整数代表矩形的宽度,输出此矩形
如:请输入宽度:10
打印如下:
##########
# #
# #
##########
字符串的比较运算
运算符:
> >= < <= == !=
示例:
‘A’< 'B' #True
‘B’< 'a' #True
‘ABC’> 'AB' #True
‘AD’< 'ABC' #False
‘ABC’== 'abc' #False
in / not in 运算符
作用:
in用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在则返回True,否则返回False
格式:
对象 in 容器
示例:
s = 'welcome to tarena!'
'to' in s # True
'wei' in s # False
字符串的索引操作
python字符串str是不可以改变的字符序列
索引语法
字符串[整数表达式]
说明:
·python 序列都可以用索引(index)来访问序列中的对象(元素)
·python 序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
·python 序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个,第一个是-len(s)
示例:s = 'ABCDE'
print(s[0]) # A
print(s[1]) # B
print(s[4]) # E
print(s[-1]) # E
print(s[-5]) # A
切片 slice
从字符串序列中取出相应的元素重新组成一个字符串序列
语法:
s[(开始索引b):(结果索引e)(:(步长s))]
注:小括号()括起的部分代表可省略
语法说明:
开始索引是切片开始切下的位置,0代表第一个,
结束索引是切片的终止索引(但不包含终止点)
步长是切片每次获取完当前元素后移动的方向和偏移量
(1)没有步长,相当于取值完成后向右移动一个索引的位置(默认为1)
(2)当步长为正数时,取正向切片;
步长默认为1,开始索引默认为0;
结束索引默认为len(s)
(3)当步长为负整数时,取反向切片
反向切片时,默认的起始位置为最后一个元素,终止位置是第一个元素的前一个位置
示例:s = 'ABCDE'
a = s[1:4] # a--> 'BCD'
a = s[:4] # a--> 'ABCD'
a = s[2:] # a--> 'CDE'
a = s[0:2] # a--> 'AB'
a = s[1:1] # a--> '' # ''表示空字符串
a = s[3:1] # a--> ''
a = s[0::2] # a--> 'ACE'
a = s[0::3] # a--> 'AD'
a = s[::] # a--> 'ABCDE'---->相当于a = s[0:4:1]
a = s[2::2] # a--> 'CE'
a = s[::-1] # a--> 'EDCBA'
a = s[3::-2] # a--> 'DB'
练习:
1、输入一个字符串,打印如下内容
(1)打印这个字符串的第一个字符
(2)打印这个字符串的最后一个字符
(3)如果这个字符串长度是奇数,打印中间这个字符
注:求字符串长度的函数为len(s)
2、输入任意一个字符串,判断这个字符串是否是回文,回文是指中心对称的文字
例:上海自来水来自水上(ABCCBA)
Python3中常用的序列函数:
len(seq) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
示例:
s = "ABCD"
print(len(s)) # 4
print(max(s)) # D
print(min(s)) # A
len('a b\nc')=5 ##空格算一个字符,“\n”为换行符,算一个字符
字符串编码转化函数:
ord(c) 返回一个字符串的Unicode编码值
chr(i) 返回i这个值对应的字符
示例:
print(ord('A')) # 65
print(ord‘中’) # ???
练习:
1、写一个程序,输入一段字符串,如果字符串不为空,则把第一个字符的编码打印出来
2、写一个程序,输入一个整数值(0~65535),打印出这个数值所对应的字符
整数转化为字符串函数:
hex(i) 将整数转化为十六进制的字符串
oct(i) 将整数转化为八进制的字符串
bin(i) 将整数转化为二进制的字符串 binary二进制
字符串的构造(创建)函数 str
str (obj='') 将对象转化为字符串
示例:
s = 123
print(str(s) + '456') # 123456
常用的字符串方法:
见:str.html
字符串的调用语法
对象.方法名(方法传参)
注:方法的调用属于表达式,通常可以返回一个值或None
示例:
'abc'.isalpha() #正确
'abc中文'.isalpha() #正确
'abc123'.isalpha() #错误
123.isalpha() #错误
空白字符:指空格,水平制表符(\t),换行符(\n)等不可见字符
字符串的格式化表达式:
作用:生成一定格式的字符串
运算符:%
语法格式:
格式字符串 % 参数值
格式字符串 % (参数值1,参数值2,...)
说明:
格式化字符串中以%开头的为占位符,占位符的位置将用参数值替换
%右侧为参数值,当有多个参数值时用括号()括起来,之间用逗号(,)分割
示例;
fmt = “姓名:%s,年龄:%d”
name = 'tarena'
age = 15
print (fmt % (name,age))
格式化字符串的占位符和类型码:
见:str.html
占位符和类型码之间的格式语法:
% [格式语法] 类型码
格式语法:
- 左对齐
+ 显示正负
0 补零
宽度(整数)
宽度·精度(整数)
示例:
'%10d' % 123 #' 123'
'%-10d' % 123 #'123 '
'%10s' % 'abc' #' abc'
'%-5s' % 'abc' #'abc '
'%05d' % 123 #'00123'
'%7.3f' % 3.1415926 # ' 3.141'
'%07.3f' % 3.1415926 # '003.141'
练习:
输入三行文字,让这些文字依次以20字符的宽度右对齐输出,
如:请输入第1行:hello world
请输入第2行:abcd
请输入第3行:a
输出结果为:
hello world
abcd
a
完成后思考:能否以最长字符串的长度进行右对齐显示(左侧填充空格)
****字符串文本解析方法 split 和 join:***
S.split(sep = None)
将字符串,使用sep作为分隔符分割S字符串,返回分割后的字符串的列表,
当不给定参数时,用空白字符作为分隔符进行分割
S.join(iterable)
用可迭代对象中的字符串,返回一个中间用S进行分割的字符串
例:
s = 'Beijing is capital'
L = s.split(' ') #L=['Beijing','is','capital']
s = '\\'
L = ['C:','Programe files','python3']
s2 = s.join(L) #s2 = b'C:\Programe files\python3