1.字符串
a.使用单引号或双引号括起来的字符集就是字符串
b.引号中单独的符号、数字、字母等叫字符
c.转义字符:可以用来表示一些有特殊功能或者是特殊意义的字符(通过在固定的字符前加),转义字符在计算字符串长度时,转义字符代表一个字符。
-->'
\ -->
\n -->换行
\t -->制表符
" -->"
例:
'123' # 数字字符串
'ahcn'
'^&*&sf'
'坑逼'
' '
str2='\''
print(str2)
str3='\\'
print(str3)
str1='床前明月光,\n疑是地上霜。'
print(str1)
结果
'
\
床前明月光,
疑是地上霜。
2.阻止转义
可以通过在字符串前面加r或R,来阻止转义字符转义
例:
str4=r'\\'
print(str4)
结果:
\\
3.Python中字符串的字符是Unicode编码
Unicode编码:使用16位对一个字符进行编码编,编码的目的是让字符可以存储到计算机中。Unicode码中包含了ASSCII码,可以表示世界上所有的语言和符号
a.获取一个字符的Unicode码,ord('字符')
例:
print(hex(ord('与')))
结果:
0x4e0e
b.将Unicode码转换成字符,chr(编码值)
例:
print(chr(0x4e00))
结果:
一
c.字符串比较大小
从字符串的第一个字符开始依次往后比较每个字符的大小,直到遇到字符不一样为止。比较字符大小的时候, 实质比的是他们编码的大小
例:
print('abc'>'b')
print('abc'>'aa')
结果:
False
True
4.获取字符串长度
长度 :字符串的字符个数
len():是获取序列长度的内置函数
例:
count=len('abc\n123')
print(count)
结果:
7
5.获取字符
索引:字符串中每一个字符都对应一个下标(索引),我们可以通过索引值
例:
'abc' ---> a:0 ,b:1 ,c:2
格式:字符串[索引值]
例:
str1='abc'
print(str1[0]) # a
print(str1[1]) #b
str2="dy\nup"
print(str2[4])
结果:
a
b
p
注意:下标的范围:0~字符串的长度-1。获取字符串中的字符时,索引值不能超过索引的范围,否则会报IndexError
索引值为负数时:
例:
print(str1[-1]) # 获取字符串str1中的最后一个字符
print(str1[-2]) # 获取字符串str1中的倒数第二个字符
结果:
c
b
6.获取部分字符
格式1:字符串[开始下标:结束下标]==字符串[开始下标:结束下标:1] --->获取字符串中包括开始下标但不包括结束下标之间的所有字符字
格式2:符串[开始下标:结束下标:步进]
a.开始下标对应的字符,要在结束下标对应的字符前面(步进是整数)
例:
str3='hello ren za'
print(str3[6:9])
str4='hello Python'
print(str4[6:12]) # Python
print(str4[-6:12]) # Python
结果:
ren
Python
Python
b.开始下标省略:从字符串的最前面取到结束下标前一个字符
例:
print(str4[:4])
结果:
hell
c.结束下标省略:从开始位置取到字符串结束
print(str4[4:])
结果:
o Python
e.两个都省略:获取整个字符串的内容
例:
print(str4[:])
结果:
hello Python
f.有步进
例:
print(str4[::2]) # hloPto
结果:
hloPto
g.当步进是负数时,开始下标的字符可以取而结束下标的字符取不到。当结束下标和开始下标省略时,全取
例:
print(str4[4::-1]) #
print(str4[:4:-1])
print(str4[4:0:-1])
print(str4[::-1])
print(str4[4::-2])
print(str4[::-2])
结果:
olleh
nohtyP
olle
nohtyP olleh
olh
nhy le
7.字符串拼接
1)运算符+
注意:加号两边要么都是数字要么都是字符串,不能一边是数字一边是字符串
例:
str1='hello'+' '+'Python'
print(str1)
结果:
hello Python
2)运算符*
让字符串重复
格式:字符串*整数
例:
str2='hello '*3
print(str2)
str2='a'*10
print(str2)
结果:
hello hello hello
aaaaaaaaaa
3)in
判断in前边字符串是否在in后边字符串中-->True 或False
格式:字符串1 in 字符串2
例:
result='aa'in 'aaffdd'
print(result)
结果:
True
4)not in
判断not in前边字符串是否不在not in后边字符串中-->True False
格式:字符串1 not in 字符串2
例:
result='123' not in 'abc'
print(result)
结果:
True
5) 格式字符串
格式:'%s'(表示站位符) %(值)(可以有多个站位符)
例:
str3='abd%swrweff%s' %('123','dd232')
print(str3)
结果:
abd123wrweffdd232
#%s -->字符串占位符(格式符)
#%d -->整数占位符(格式符)
#%f -->浮点数占位符
#%c -->长度是1的字符串占位符(字符站位符)
# 可以给一个字符,也可以给字符的编码值
str4='-%s-%d-%f-%c-'%('我是字符串',1234,12.5,'k')
print(str4)
# %.nf:使用n值限制小数点后面的位数(默认六位小数)
str5='金额:%.2f元'%(100)
print(str5)
# 如果占位符后面没加%(),那么这个字符串只是普通的字符串
str6='金额:%.2f元'
print(str6)
# %x和%X--->十六进制数据占位符
number=15
str7='%d的十六进制是0x%x'%(number,number)
print(str7)
结果:
-我是字符串-1234-12.500000-k-
金额:100.00元
金额:%.2f元
15的十六进制是0xf
str9='-%c-%s-%d-%f-%u-%o-%x-%X-%e-%E-%g-%G'%('k','jgakshd',-120,12.0,34,99,15,15,15.8,15.8,15.8,15.8)
print(str9)
结果:
-k-jgakshd--120-12.000000-34-143-f-F-1.580000e+01-1.580000E+01-15.8-15.8
6)格式化输出
name='路飞'
age=23
print('%s今年%d岁'%(name,age))
str8='他是%g岁'%(7.99)
结果:
路飞今年23岁
8.字符串方法
1)capitalize()函数
将字符的第一个字符转换为大写
str='hello ren si yu'
print(str)
new_str=str.capitalize()
print(new_str)
结果:
hello ren si yu
Hello ren si yu
2)center(width,fillchar)
返回一个长度为width且指定字符串居中的字符串,空余位置用fillchar填充,fillchar为填充的字符,默认为空格
str='hello'
print(str)
new_str=str.center(10,'*')
print(new_str)
结果:
hello
hello*
3)count(str,beg=0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
str='www.runoob.com'
print(str.count('o'))
print(str.count('www',0,len(str)))
print(str.count('www',0,10))
结果:
3
1
1
4)bytes.decode
decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。
str='任思宇'
str_utf8=str.encode("UTF-8")
str_gbk=str.encode("GBK")
print(str)
print("UTF-8编码:",str_utf8)
print("GBK编码:",str_gbk)
print("UTF-8解码:",str_utf8.decode('UTF-8','strict'))
print("GBK解码:",str_gbk.decode('GBK','strict'))
结果:
任思宇
UTF-8编码: b'\xe4\xbb\xbb\xe6\x80\x9d\xe5\xae\x87'
GBK编码: b'\xc8\xce\xcb\xbc\xd3\xee'
UTF-8解码: 任思宇
GBK解码: 任思宇
5endwith(suffix,beg=0,end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
str='hello ren si yu'
new_str=str.endswith('yu')
print(new_str)
new_str=str.endswith('s',0,11)
print(new_str)
new_str=str.endswith('u',0,len(str))
print(new_str)
结果:
True
True
True
6)expandtabs(tabsize=8)
str='tab is\tsb'
print(str)
print(str.expandtabs())
print(str.expandtabs(8)) #默认为8
print(str.expandtabs(16))
结果:
tab is sb
tab is sb
tab is sb
tab is sb
7)find(str,beg,end=len(string))
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
str='hello sb go go'
new_str=str.find('go')
print(new_str)
new_str=str.find('go',0,len(str))
print(new_str)
new_str=str.find('goo',0,len(str))
print(new_str)
new_str=str.find('go',11,14)
print(new_str)
结果:
9
9
-1
12
8)index(str,beg,end=len(string))
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则会出现异常
str='hello sb go go'
new_str=str.index('go')
print(new_str)
new_str=str.index('go',0,len(str))
print(new_str)
new_str=str.index('go',11,14)
print(new_str)
# new_str=str.index('goo',0,len(str))
# print(new_str)
结果:
9
9
12
9)isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
str='hello'
str1=' '
str2='123'
print(str.isalnum(),str1.isalnum(),str2.isalnum())
结果:
True False True
10)isalpha
如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回
False
str='hello'
str1=' '
str2='123'
print(str.isalpha(),str1.isalpha(),str2.isalpha())
结果:
True False False
11)isdigit()
如果字符串只包含数字则返回 True 否则返回 False
str='hello'
str1=' '
str2='123'
print(str.isdigit(),str1.isdigit(),str2.isdigit())
结果:
False False True
12)islower()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
str='Adjfi'
str1=' '
str2='124'
str3='dfsd'
print(str.islower(),str1.islower(),str2.islower(),str3.islower())
结果:
False False False True
13)isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False
str='3435djfi'
str1=' '
str2='124'
str3='dfsd'
print(str.isnumeric(),str1.isnumeric(),str2.isnumeric(),str3.isnumeric())
结果:
False False True False
14)isspace
如果字符串中只包含空白,则返回 True,否则返回 False.
str='3435djfi'
str1=' '
str2='124'
str3='dfsd'
print(str.isspace(),str1.isspace(),str2.isspace(),str3.isspace())
结果:
False True False False
15)istitle()
如果字符串是标题化的(见 title())则返回 True,否则返回 False
str='Axin'
str1='dfd'
str2=' '
str3='342352'
print(str.istitle(),str1.istitle(),str2.istitle(),str3.istitle())
结果:
True False False False
16)isupper()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
str='ASFFS'
str1='dfd'
str2=' '
str3='342352'
print(str.isupper(),str1.isupper(),str2.isupper(),str3.isupper())
结果:
True False False False
17)join(seq)
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
str='*'
str1=''
seq = ("r", "u", "n", "o", "o", "b")
print(str.join(seq))
print(str1.join(seq))
结果:
runoo*b
runoob
18)len(string)
返回字符串长度
str='hello'
print(len(str))
结果:
5
19)ljust(width,fillchar)
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格
str='yello'
print(str.ljust(10,'%'))
结果:
yello%%%%%
20)lower()
转换字符串中所有大写字符为小写.
str="HELLO"
print(str.lower())
结果:
hello
21)upper()
转换字符串中所有大写字符为大写.
str="hello ello"
print(str.upper())
结果:
HELLO ELLO
22)lstrip()
截掉字符串左边的空格或指定字符。
str='\nhello\n'
print(str)
print(str.lstrip())
结果:
hello
hello
23)rstrip()
截掉字符串右边的空格或指定字符。
str='\nhello\n'
print(str)
print(str.rstrip())
结果:
hello
hello
24)strip()
截掉字符串两边的空格或指定字符。
str='\nhello\n'
print(str)
print(str.strip())
结果:
hello
hello
25)maketrans()
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
str='hello yello sb www.com'
new_str=str.maketrans('se','12')
print(str.translate(new_str))
结果:
h2llo y2llo 1b www.com
26)max(str)
返回字符串 str 中最大的字母。
str='hello'
str1='235'
print(max(str),max(str1))
结果:
o 5
27)min(str)
返回字符串 str 中最小的字母
str='hello'
str1='235'
print(min(str),min(str1))
结果:
e 2
28)rfind(str,beg=0,end=len(string))
类似于 find()函数,不过是从右边开始查找.
str="hello ren si yu"
print(str.rfind('si',0,len(str)))
结果:
10
29rjust(width,fillchar)
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
str='yello'
print(str.rjust(20,'%'))
结果:
%%%%%%%%%%%%%%%yello
30)rindex(str,beg=0,end=len(string))
类似于 index(),不过是从右边开始.
str='hello ren si yu'
print(str.rindex('re',0,len(str)),str.rindex('en',0,len(str)))
# print(str.rindex('enn',0,len(str)))
结果:
6 7
31)replace(old,new,max)
把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
str='ok www is ok or yes ok'
print(str.replace('ok','12',2))
结果:
12 www is 12 or yes ok
32)split(str="",num=string,count(str))
num=string.count(str)) 以 str 为分隔符截取字符串,如果num 有指定值,则仅截取 num 个子字符串str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。num -- 分割次数。
str='hello ren si yu you are sb'
print(str.split())
print(str.split('u',str.count('u')))
print(str.split('u',2))
结果:
['hello', 'ren', 'si', 'yu', 'you', 'are', 'sb']
['hello ren si y', ' yo', ' are sb']
['hello ren si y', ' yo', ' are sb']
33)splitlines([keepends])
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
str='ab c\n\nde fg\rkl\r\n'
print(str)
print(str.splitlines())
print(str.splitlines(True))
print(str.splitlines(False))
结果:
ab c
de fg
kl
['ab c', '', 'de fg', 'kl']
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
['ab c', '', 'de fg', 'kl']
34)startswith(str,beg=0,end=len(string))
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
str='hello ren si yu you are sb'
print(str.startswith('hello',0,len(str)))
print(str.startswith('re',6,len(str)))
print(str.startswith('re',5,10))
结果:
True
True
False
35)swapcase()
将字符串中大写转换为小写,小写转换为大写
str='HEllo'
print(str)
print(str.swapcase())
结果:
HEllo
heLLO
36)title()
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
str='hello ren si yu you are sb'
print(str.title())
结果:
Hello Ren Si Yu You Are Sb
9.if语句
条件语句结果为True执行的代码块
执行过程:先判断条件语句是否为True,如果为True就执行if语句:后面对应的一个缩进的所有代码。为False,就不执行冒号后面的一个缩进的代码块,直接执行后继的其他语句
条件语句:可以是任何有值的表达式,但一般是布尔值
1)格式1:
if True:
print('代码1')
print('代码2')
print('代码3')
print('代码4')
练习:用一个变量保存时间(50米短跑),如果时间小于8秒则打印及格
time=7
if time>=8:
print('不及格')
else:
print('及格')
print(time)
结果
及格
7
2)格式2:
if 条件语句:
语句块1
else:
语句块2
执行过程:先判断条件语句是否为True,如果为True就执行语句块1,否则执行语句块2
用一个变量保存成绩,如果成绩打于60,则打印及格,否则打印不及格
grade=79
if grade>=60:
print('及格')
else:
print('不及格')
结果:
及格
网友评论