目录
- 字符串
- 字符串转译、ASCII编码
- raw字符串、字符串的运算
- in与 not in、字符串索引
- 切片
- 序列函数、编码转换函数
- 整数转字符串函数
- 字符串的构造函数
1. 字符串
字符串 str
作用: 用来记录文本(文字)信息
字符串的表示方法:
在非注释中,凡是用引号括起来的部分都是字符串
'str' 单引号
"str" 双引号
'''str''' 三单引号
"""str""" 三双引号
字符串字面值的表示方式:
空字符串的字面值表示方式:
' ' ;" " ;''' ''';""" """
非空字符串的字面值表示方式:
'hello';"hello";'''hello''';"""hello"""
单引号和双引号的区别:
单引号内的双引号不算结束符 #print('"hello"') #>>>"hello"
双引号内的单引号不算结束符 #print("'hello'") #>>>'hello'
三引号字符串:
作用:
三引号字符串的换行会自动转换为换行符'\n' #隐式换行
三引号内可以包含单引号和双引号
如何表示:
welcome to beijing
I like python!
I am studing!'
1. print('welcome to beijing\nI like python!\nI am studing!')
2. s = '''welcome to china
I Iike python!
I am studing!
''' #在交互界面隐式换行
print(s)
2. 字符串转译、ASCII编码
用转义序列代表特殊字符:
字符串字面值中,用字符反斜杠(\)后跟一些字符代表一个字符
字符串中的转义字符表:
\' 代表一个单引号
\'' 代表一个双引号
\\ 代表一个反斜杠
\n 换行
\r 返回光标至行首
\f 换页
\t 水平制表符
\v 垂直制表符
\b 倒退
\0 空字符,字符值为0
\0oo oo为两位八进制表示的字符
\xXX XX为两位十六进制表示的字符
\uXXXX Unicode16的十六进制表示的字符
\UXXXXXXXX Unicode32的十六进制表示的字符
eg:
s =' \'\"\'\'\'\"\"\" '
print(s) #>>>'"'''"""
ASCII编码:
https://baike.baidu.com/item/ASCII/309296?fr=aladdin
常用ASCII编码:
字符 十进制 十六进制
'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
3. raw字符串、字符串的运算
raw 字符串(原始字符串):
字面值格式:
r'字符串内容'
r''字符串内容"
r'''字符串内容'''
r"""字符串内容"""
作用:让转义字符 \ 无效
eg:
a = 'C:\newfile\test.py'
print(a)
print(len(a)) #>>>16
b = r'C:\newfile\test.py'
print(b) #>>>C:\newfile\test.py
print(len(b)) #>>>18
字符串的运算:
运算符: + ; += ; * ; *=
+ 加号运算符用于字符串的拼接
* 运算符用于生成重复的字符串
+= a += b # a = a + b
*= a *= b # a = a * b
eg:
a='ABCD'
b='EFGH'
c = 2
print(a+b) #>>>ABCDEFGH
a+=b
print(a) #>>>ABCDEFGH
print(a*c) #>>>ABCDEFGHABCDEFGH
a*=c
print(a) #>>>ABCDEFGHABCDEFGH
字符串的比较运算:
单个字符比较的是编码值;多个字符比较对应位置比较,出现结果便输出
运算符:
> ; >= ; < ; <= ; ==
eg:
'A' < 'B' #>>>True
'B' < 'a' #>>>True
'ABC' > 'AB' #>>>True (A=A;B=B;C>'')
'AD' < 'ABC' #>>>False (A=A;D>B)
'ABC' == 'abc' #>>>False
4. in与 not in、字符串索引
in / not in 运算符:
作用:
in 用于序列,字典,集合中,用于判断某个值是否存在于容器中,
如果存在则返回True;否则返回False
格式: 对象 in 容器
eg:
s = 'welcome to tarena!'
'to' in s #>>>True
'TO' in s #>>>False
'TO' not in s #>>>True
'e to t' in s #>>>True
字符串的索引操作:
python 字符串str是不可以改变的字符序列
索引语法:
字符串[整数表达式] #只能是整数表达式(!整数表达式!)
说明:
python序列都可以用索引(index)来访问序列中的对象(元素)
python序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1
python序列的反向索引是从-1开始的, -1代表最后一个, -2代表倒数第二个,第一个是-len(s)
eg:
s = 'ABCDE'
print(s[0], s[1], s[4], s[-1], s[-2],sep='') #>>>ABEED
5. 切片
切片 slice
作用:从字符串序列中取出一部分相应的元素重新组成一个字符串
语法:字符串[(开始索引b):(结束索引e)(:(步长s))] #()内部分可以省略
说明:
1.开始索引是切片开始切下的位置,0代表第一个元素,-1代表最后一个元素
2.结束索引是切片的终止索引(但不包含终止索引)(!不包含!)
3.步长是切片每次获取完当前索引后移动的方向和偏移量
1)没有步长相当于取值完成后向后移动一个索引的位置
2)当步长为正整数时,取正向切片:
步长默认值为1,开始索引默认值为0,结束索引的默认值为len(s)
3)当步长为负整数时,取反向切片:
反向切片时,默认的起始位置为最后一个元素,默认终止位置为第一个元素的前一个位置
eg:
s = 'ABCDEF'
s[1:5:2] #>>>'BD' ;从s[1]开始不包含s[5],步长为2
s[:2] #>>>'AB';从s[0]开始不包含s[5]
s[2:] #>>>'CDEF';从s[2]开始到且不包含s[len(s)-1]
s[::2] #>>>'ACE';从s[0]开始到且不包含s[len(s)-1],步长为2
s[4::-1] #>>>'EDCBA';反向切片,从s[4]开始,到且包含s[0],步长为1
s[::-1] #>>>'FEDCBA';
s[4:0:-2] #>>>'EC'
练习:
#输入一个字符串,把字符串的第一个和最后一个字符去掉
s = input('请输入一个字符串:\n')
print(s[1:len(s)-1])
'''输入任意一个字符串,判断这个字符串是否为回文
回文是指中心对称的文字,如:上海自来水来自海上;ABCCBA;12321'''
s = input('请输入一个字符串:\n')
s1 = s[::-1] #字符串的倒置
if s1 == s :
print('您输入的是回文')
else:
print('您输入的不是回文')
6. 序列函数、编码转换函数
python 3 中常用的序列函数:
len(seq) 返回序列的长度
max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
eg:
s = 'ABCDE'
print(len(s)) #>>>5
print(max(s)) #>>>E
print(min(s)) #>>>A
##########
len('a b\nc') #>>>5
len('中y d\n太') #>>>6
编码转换函数:
ord(c) 返回一个字符串的Unicode编码值
chr(i) 返回i这个值所对应的字符
eg:
print(ord('A')) #>>>65
chr(65) #>>>'A'
print(chr(65)) #>>>A
print(ord('中')) #>>>20013
chr(20013) #>>>'中'
练习
'''输入一段字符串,如果字符串不为空,
则把第一个字符的编码打印出来
'''
str0 = input('请输入一段字符\n')
if bool(str0) != False :
print('该字符串第一个字符的编码为:',ord(str0[0]))
else:
print('请勿输入空字符串')
'''输入一个整数值(0~65535),
打印出这个数值所对应的字符
'''
int0 = int(input('请输入0~65535范围内的整数\n'))
if int0>=0 and int0 <= 65335 :
print(chr(int0))
else:
print('输入有误,请重新输入0~65535范围内的整数')
7. 整数转字符串函数
整数转换为字符串函数:
hex(i) 将整数转换为十六进制字符串
oct(i) 将整数转换为八进制字符串
bin(i) 将整数转换为二进制字符串
8.字符串的构造函数
字符串的构造(创建)函数 str :
str(obj ='') #基本可以将任何对象转换为字符串
eg:
s =123
print(str(s)+'456') #>>>123456
练习
'''
用字符串* 运算符打印三角形,要求输入一个整数,此整数代表此三角形离左侧的字节数
如:请输入离左侧的距离: 3,则打印:
*
***
*****
*******
'''
n = int(input('请输入一个整数:'))
print(' '*n,' *')
print(' '*n,' ***')
print(' '*n,' *****')
print(' '*n,'*******')
'''输入三行文字,让这三行文字在一个方框居中显示,如输入(不要输入中文):
hello world!
my name is python
python
显示如下:
+----------------------+
| hello world! |
| my name is python |
| python |
+----------------------+
'''
#######原始方法
a = input('请输入字符串1: ')
b = input('请输入字符串2: ')
c = input('请输入字符串3: ')
#计算最长的一个字符串长度,保存为m
m = len(a)
m = len(a) if len(a)>len(b) else len(b)
m = m if m > len(c) else len(c)
#左右空格计算
la_l = int((m-len(a))//2)
la_r = m - len(a) - la_l
lb_l = int((m-len(b))//2)
lb_r = m - len(b) - lb_l
lc_l = int((m-len(c))//2)
lc_r = m - len(c) - lc_l
#打印
print('+ ','-'*(m+2),' +',sep ='')
print('| ' , ' '*la_l , a , ' '*la_r , ' |',sep ='')
print('| ' , ' '*lb_l , b , ' '*lb_r , ' |',sep ='')
print('| ' , ' '*lc_l , c , ' '*lc_r , ' |',sep ='')
print('+ ','-'*(m+2),' +',sep ='')
#######字符串方法
a = input('请输入字符串1: ')
b = input('请输入字符串2: ')
c = input('请输入字符串3: ')
#计算最长的一个字符串长度,保存为m
m = max(len(a),len(b),len(c))
print('+ ' + '-'*(m+2) + ' +')
print('| '+a.center(m)+' |')
print('| '+b.center(m)+' |')
print('| '+c.center(m)+' |')
print('+ ' + '-'*(m+2) + ' +')