Day_03 Python 字符串
1.字符串
字符串:使用单引号或双引号括起来的字符集就是字符串,引号中单独的符号、数字、字母、空格等叫字符。
例:'123' 'as231' '安安' "hello world!"
1.1 字符串换行
使用\n或\r为字符串内容换行
print("hello\nworld!\rpython")
hello
world!
python
[Finished in 0.3s]
1.2 转义字符
用来表示一些有特殊功能或是特殊意义的字符(通过在固定的字符前加'\')
使用转义字符输出"
print("hello\"world!")
hello"world!
[Finished in 0.2s]
注意:转义字符在计算字符串长度时候,转义字符代表一个字符。
1.3 制表符
使用制表符\t为输出前加空白
print("\thello world!")
hello world!
[Finished in 0.2s]
1.4 Python中阻止转义
Python中可以通过在字符串前加r或R来阻止转义
print(r'\\')
print(R'\'')
\\
\'
[Finished in 0.2s]
注意:Python中字符串中的字符是Unicode编码,Unicode编码使用16位对一个字节进行编码,ASCII编码使用8位对一个字节编码。编码的目的是让字符可以存储在计算机中。Unicode包含ASCII,可以表示世界上所有的符号和语言。
1.5 字符与Unicode编码的转换
获取字符的Unicode编码
语法:ord('字符') hex()函数为获取它的16进制表示
print(hex(ord('世')),hex(ord('界')))
0x4e16 0x754c
[Finished in 0.2s]
将Unicode编码转换为字符
chr(编码值)
print(chr(1))
�
[Finished in 0.3s]
print(chr(0x4eff))
仿
[Finished in 0.3s]
Python中的字符,实质是一个有序的字符序列
1.6获取字符串长度
长度:字符串中字符个数。len()函数是获取序列长度的内置函数
语法:len(字符串)
count = len('abc\n123')
print(count)
print(len('sadad'))
7
5
[Finished in 0.2s]
1.7 获取单个字符
通过下表获取字符串序列里面的字符元素。字符串中每个字符都对应一个索引。通过索引值来获取固定的字符。
str1 = 'abc'
print(str1[0])
a
[Finished in 0.3s]
获取p:
str2 = 'good good study\nday day up'
print(str2[-1])
print(str2[25])
print(str2[len(str2)-1])
print(str2[-2])
p
p
p
u
[Finished in 0.2s]
下标范围:0 - 字符串长度-1,负数表示倒数。例: -1 倒数第一个,-2:倒数第二个
负数范围:-1 ~ - 字符串长度
获取字符的时候,索引值不能超过索引的范围,否则会报IndexError
1.8 获取指定范围字符
语法:字符串[开始下标:结束下标]-->截取从开始下标到结束下标的字符
截取字符串操作有5种情况。
注意:截取操作包含开始下标,不包含结束下标
注意:开始下标对应的字符,要在结束下标对应的字符前面。
第一种:开始下标与结束下标都存在。
截取操作:
str1= 'abcd123'
print(str1[1:4])
print(str1[-6:-3])
bcd
bcd
[Finished in 0.1s]
注意:选择的范围为正数a:b时,表示截取操作从下标a开始到b结束(包含下标a的元素,但不包含下标b的元素);当选择范围为负数-a:-b时,表示截取的范围是从倒数第a位的下标开始到倒数第b位的下标结束(包含a下标元素,不包含b下标元素)。
第二种:开始下标省略
开始下标省略:从字符串的最前面取到结束下标前。
str1= 'abcd123'
print(str1[:5])
abcd1
[Finished in 0.3s]
注意:截取同样不包括结束下标元素。
第三种: 结束下标省略
从开始位置获取到字符串结束
str1= 'abcd123'
print(str1[3:])
d123
[Finished in 0.2s]
第四种:开始结束下标都省略
获取整个字符串;相当于直接输出
str1= 'abcd123'
print(str1[:])
abcd123
[Finished in 0.2s]
第五种:步进获取
步进:设置截取字符串按照一定规则进行(步进操作类似于等差数列)
语法:str[begin:end:count] 其中str代表字符串,begin代表截取字符串的开始下标,end表示截取字符串的结束下标,count表示步进值(begin,end,count都可同时为空)。
注意:步进操作表示截取按步进值进行等差数列截取。例str1='abcd123',则操作str1[0:7:2]表示截取字符串str1从下标0-7按下标进行等差为2的截取操作。结果为ac13
str1= 'abcd123'
print(str1[0:7:2])
ac13
[Finished in 0.3s]
注意:当步进值为负数,表示下标按步进等减。
例:这里结果为31c是因为结束下标0的元素a不算。
str1= 'abcd123'
print(str1[7:0:-2])
31c
[Finished in 0.2s]
字符串运算
2.1 字符串拼接
语法: 字符串1 + 字符串2
str1 = 'hello'
str2 = ' world!'
str3 = str1+str2
print(str3)
print(str1+str2)
hello world!
hello world!
[Finished in 0.2s]
注意:做 + 运算必须保证 + 两边数据类型一致。例:不能是一个数字 + 一个字符串
2.2 字符串乘
语法:字符串 * 整数数字 ;功能:重复多少次
str1 = 'hello'
str2 =str1 * 2
print(str2)
str3 = 'a'
print(str3*6)
hellohello
aaaaaa
[Finished in 0.2s]
2.3 in
语法:字符串1 in 字符串2; 功能:判断字符串1是否在字符串2中,返回值为布尔型
语法:字符串1 not in 字符串2 ; 功能:判断字符串1不在字符串2中
result = 'aa' in 'aabcc'
print(result)
str1 = 'aa'
str2 = 'abc'
print(str1 in str2)
result = 'ad' not in 'aa'
print(result)
True
False
True
[Finished in 0.2s]
2.4 格式字符串
语法:'占位符1占位符2'%(值1,值2)
%s ---> 字符串占位符
%d ---> 整数占位符
%f ---> 浮点数占位符
%c ---> 长度为1的字符串占位符(字符占位符),可以是一个字符,也可以是字符的编码值
%.nf ---> 使用n值限制小数点后面的位数(默认6位小数)
例:%s--->字符串占位符
str1 = 'abc%sef%s'%('d','g')
str2 = 'abc%s'%('d')
print(str1)
print(
abcdefg
abcd
[Finished in 0.2s]
例:%d--->整数占位符
str1 = '123%d56%d'%(4,7)
str2 = '1234%d56'%(-4)
print(str1)
print(str2)
1234567
1234-456
[Finished in 0.2s]
%f--->浮点数占位符
str1 = '1%f+2%f'%(4.5,9.7)
str2 = '2%f'%(4.5)
print(str1)
print(str2)
14.500000+29.700000
24.500000
[Finished in 0.2s]
注意:浮点数这里涉及到一个精度问题,如何去取想要的精度?
浮点数精度取值:在%f之间加一个.n,n表示你想要精确的位数。如果不加,则默认为6位小数。
str1 = '1%.1f+2%.2f'%(4.5,9.7)
str2 = '2%.3f'%(4.5)
print(str1)
print(str2)
14.5+29.70
24.500
[Finished in 0.3s]
%c--->字符占位符
str1 = 'abc123%c'%('d')
print(str1)
abc123d
[Finished in 0.3s]
注意:%c字符占位符与%s字符串占位符区别于前者只能表示一个字符,后者可以表示字符串。
组合使用
str1 = 'a%se%c1%d+%.2f'%('bcd','f',23,12.6)
print(str1)
abcdef123+12.60
[Finished in 0.2s]
2.5 格式化输出
输出规范
name = 'aa'
age = 18
print('%s今年%d岁'%(name,age))
3 字符串操作
3.1 capitalize()方法
capitalize()方法的功能是:将字符串的第一个字母变成大写
语法:str.capitalize()
str1 = 'abc'
print(str1.capitalize())
Abc
[Finished in 0.2s]
3.2 center()方法
center()方法的功能是:返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
语法:str.center(width,fillchar)
str1 = 'abc'
print(str1.center(5,'*'))
*abc*
[Finished in 0.2s]
3.3 count()方法
count()方法功能:统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法:str.count('c')
str1 = 'aaaabc'
print(str1.count('a'))
4
[Finished in 0.3s]
3.4 endswith()方法
endswith()方法功能:判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
str1 = 'abcd123'
print(str1.endswith('a'))
False
[Finished in 0.2s]
3.5 find()方法
find()方法功能:检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
str1 = 'abcd123'
str2 = 'bc'
print(str1.find(str2))
print(str1.find(str2,0))
print(str1.find(str2,3))
1
1
-1
[Finished in 0.2s]
3.6 index()方法
index()方法功能:与find()方法一样,只是指定范围没找到子字符串会报错。
str1 = 'abcd123'
str2 = 'bc'
print(str1.index(str2))
print(str1.index(str2,0))
print(str1.index(str2,3))
1
1
Traceback (most recent call last):
File "test.py", line 8, in <module>
print (str1.index(str2, 3))
ValueError: substring not found
3.7 isalnum()方法
isalnum()方法:检测字符串是否由字母和数字组成。
str2 = 'abc123'
str3 = 'abc*d1'
print(str2.isalnum())
print(str3.isalnum())
True
False
[Finished in 0.3s]
3.8 isalpha()
isalpha()方法:检测字符串是否只由字母组成
str1 = 'runoob'
str2 = 'hello world good'
print(str1.isalpha())
print(str2.isalpha())
True
False
[Finished in 0.3s]
3.8 isdigit()方法
isdigit()方法:检测字符串是否只包含字符
str1 = '12345'
str2 = '123abc'
print(str1.isdigit())
print(str2.isdigit())
True
False
[Finished in 0.2s]
3.9 islower()
islower()方法:检测字符串中字符是否都为小写
str1 = 'abcd'
str2 = 'Abcd'
print(str1.islower())
print(str2.islower())
True
False
[Finished in 0.2s]
3.10 lower()
lower()方法功能:将字符串全部小写
str1 = 'Abcd'
print(str1.lower())
abcd
[Finished in 0.2s]
3.11 isspace()
isspace()方法:检测字符串是否只为空
str1 = ' '
str2 = ' '
print(str1.isspace())
print(str2.isspace())
True
True
[Finished in 0.3s]
注意:tab键也会当成空格
3.12 istitle()
istitle()方法:判断字符串是否为title:单词首字母大写
str1 = 'Hello World'
str2 = 'hello world'
print(str1.istitle())
print(str2.istitle())
True
False
[Finished in 0.3s]
3.13 title()
title()方法:将字符串转换为标题格式
str1 = 'hello world'
print(str1.title())
Hello World
[Finished in 0.2s]
3.14 isupper()
isupper()方法:判断字符串字符是否大写
str1 = 'hello world'
print(str1.isupper())
False
[Finished in 0.2s]
3.15 upper()
upper()方法:将字符串转换为大写
str1 = 'hello world'
print(str1.upper())
HELLO WORLD
[Finished in 0.2s]
3.16 join()
join()方法:将序列中的元素以指定的字符连接生成一个新的字符串
str1 = '-'
str2 = '*'
str3 = ('a','b','c','d')
print(str1.join(str3))
print(str2.join(str3))
a-b-c-d
a*b*c*d
[Finished in 0.2s]
3.17 len()
len()方法:返回字符串长度
str1 = 'abcde'
print(len(str1))
5
[Finished in 0.2s]
3.18 ljust()
ljust()方法:返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
str1 = 'abcd'
print(str1.ljust(7))
print(str1.ljust(0))
abcd
abcd
[Finished in 0.2s]
3.19 lstrip()
lstrip()方法:截掉字符串左边的空格或指定字符。
str1 = 'abcd '
print(str1.lstrip())
print(str1.lstrip('a'))
abcd
bcd
[Finished in 0.2s]
3.20 max(str)
max(str)方法:返回字符串中最大字符
str1 = 'abcd'
print(max(str1))
d
[Finished in 0.2s]
3.21 min(str)
min(str)方法:返回字符串中最下字符
str1 = 'abcd'
print(min(str1))
a
[Finished in 0.2s]
3.22 replace()
replace()方法功能:把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str1 = 'abcd1232ab'
print(str1.replace('abc','qre'))
print(str1.replace('2','6',1))
qred1232ab
abcd1632ab
[Finished in 0.3s]
3.23 rfind()
rfind()方法:类似find()方法,区别在于从右边查找
语法:str.rfind(str,begin,end)
str1 = 'abcd123'
print(str1.rfind('23',2,7))
print(str1.rfind('23',2,6))
5
-1
[Finished in 0.2s]
3.24 rindex()
rindex()方法:类似index,区别在于从右边
语法:str.rindex(str,begin,end)
str1 = 'abcd123'
print(str1.rindex('23',2,7))
print(str1.rindex('23',2,6))
5
ValueError: substring not found
3.25 rjust()
rjust()方法: 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
语法:str.rjust(width,fillchar)
str1 = 'aaa'
print(str1.rjust(7,'*'))
****aaa
[Finished in 0.3s]
3.26 rstrip()
rstrip()方法: 删除 string 字符串末尾的指定字符(默认为空格).
str1 = '123aaa'
print(str1.rstrip())
print(str1.rstrip('aaa'))
123aaa
123
[Finished in 0.2s]
3.27 split()
split(0方法:指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
语法:str.split(str, num)
str1 = 'abcd1234'
str2 = 'abcdac12c32'
print(str1.split('1'))
print(str2.split('c',3))
['abcd', '234']
['ab', 'da', '12', '32']
[Finished in 0.3s]
3.28 startswith()
startswith()方法:判断字符串以什么开头
str1 = 'abcd1234'
print(str1.startswith('a'))
print(str1.startswith('b'))
True
False
[Finished in 0.2s]
3.29 swapcase()
swapcase()方法:将字符串中大写转小写,小写转大写
str1 = 'Abc12anc'
print(str1.swapcase())
aBC12ANC
[Finished in 0.2s]
3.30 zfill()
zfill()方法:返回指定长度的字符串,原字符串右对齐,前面填充0
str1 = 'abcd123'
print(str1.zfill(10))
000abcd123
[Finished in 0.2s]
上一篇: 03字符串
下一篇: 02字符串的练习(03)