循环嵌套
外层执行一次,内层循环执行一圈
1 字符串 str
定义: 有一系列字符组成的不可变数据容器
‘我是中国人,家住东北’
编码:
ASCII编码: 字母/数字等字符, 1个字符(8位)
GBK编码: 字母/数字等字符/中文, 英文1个字符(8位)/汉字2个字符
Unicode编码: 国际编码,字母/数字等字符/中文, 旧字符2个字符/新字符4个字符
UTF-8编码: 国际编码,字母/数字等字符/中文, 英文1个字符(8位)/汉字3个字符
表示:
''
""
内容中什么使用另一个
''' '''
""" """
多行注释[所见即所得] --> 文档字符串(函数/类的功能的描述或说明)
转义字符:
'c:\tarena\read\version\need'
\t 水平制表符
\r 将光标移动至首行
\v 垂直制表符
\n 换行符
\\ \
\' '
\" "
转义字符
print(‘c:\tarena\read\version\need’)
问题:转移字符将结果转义,结果不符合要求
# 解决:让转义功能失效 raw
print(r’c:\tarena\read\version\need’)
print(r"c:\tarena\read\version\need")
print(r""“c:\tarena\read\version\need”"")
print(r’’‘c:\tarena\read\version\need’’’)
解决措施:
功能:让转义功能失效,输出原始字串
格式:
r’’
r""
r""""""
r’’’’’’
场景:
路径/网址
字符串的运算
+ 用于字符串的拼接
* 用于字符串重复指定次数
+= 用于字符串的拼接,并将结果赋值给一个变量
*= 用于字符串重复指定次数,并将结果赋值给一个变量
比较运算符
> >= < <= == !=
规则:
根据字符串中对应位置上的字符的Unicode值大小比较
返回值:
bool
函数:
ord(char) 返回字符对应的Unicode值
chr(code) 返回Unicode值对应的字符
in/not in运算符
功能:查看字符是否在字符串中
返回值:bool
字符串的运算符
print(4+‘元’) # int + str 不能运算
print(str(4)+‘元’) # str + str 运算
s = r"c:\read" + r’\note.txt’
print(s)
print(’-’ * 50)
s1 = ‘hello’ * 5 # 将字符串重复5次
print(s1)
s2 = ‘hello’
s3 = ‘world’
print(s2 + s3)
print(s2)
print(s3)
print(’=’ * 50)
s2 += s3 # s2 = s2 + s3
print(s2)
print(s3)
s3 *= 3
print(s3)
print(’*’ * 50)
content = ‘’
while True:
data = input(‘请输入:’)
if not data:
break
content += data
print(content)
比较运算符
print(‘2’ < ‘10’)
第1次: ‘2’ < ‘1’ False 50 < 49
print(ord(‘1’)) # 查看字符1的Unicode值
print(ord(‘2’))
print(ord(‘毕’))
print(chr(27605)) # 返回Unicode值对应的字符
场景:
用于单词是否继续向下查找
print(‘apple’ > ‘app’)
print(‘2’ < ‘20’)
print(‘21’ < ‘2056565656’)
‘ABCD…Z’
for x in range(ord(‘A’), ord(‘A’)+26):
print(chr(x), end=’’)
‘AaBbCcDd…Zz’
in/not in 运算符
s = ‘python’
print(‘P’ in s) # False 大写 “P” 不在
print(‘py’ not in s) # False
print(‘oh’ not in s) # True 从左至右
字符串是有序
‘站队’
索引
格式:
str[index]
功能:
返回索引所对应的字符
说明:
字符串的正向索引值从0开始,反向索引值从-1开始
原则:
就近原则
函数: [重点]
len(object)
功能:
返回对象长度
返回值:
int
注意:
索引值对应的字符串中无字符:索引值越界(IndexError)
返回值:
str, 单个字符
字符串的索引
s = ‘pythony’
‘’’
字符 p y t h o n y
正向索引 0 1 2 3 4 5 6
反向索引 -7 -6 -5 -4 -3 -2 -1
‘’’
print(‘t=’, s[2], s[-4])
print(‘p=’, s[0], s[-6])
print(‘y=’, s[1], s[-1])
s = ‘ABCDEDF’
计算字符串的长度
print(len(s))
print(‘D’, s[-2], s[3])
print(‘F’, s[-1], s[len(s)-1])
print(‘B’, s[1], s[-len(s)+1])
print(s[len(s)]) # s[7] 索引值越界
s = ‘string index out of range’
print(s.index(‘d’))
print(s[s.index(‘d’)])
切片
格式:
str[[start]:[stop][:step]]
参数:
start: 起始索引值,可以省略,默认表示字符串的最开头位置
stop: 终止索引值,可以省略,默认表示字符串的最末尾位置,不包含
step: 步长,可以省略,默认为1
正: 表示正向切片
负: 表示反向切片
字符串的切片
str[ [start] : [stop] [:step] ]
s = ‘12345’
print(s[:]) # ‘12345’ 复制 从字符串的最开始到最末尾切片
print(s[2:]) # ‘345’
print(s[5:]) # ‘’
print(s[:3]) # ‘123’ 不包含终止索引值对应的元素
print(s[:-5]) # ‘’
print(s[1:-2]) # ‘23’
print(s[-1:-5:-1]) # ‘5432’
print(s[::-1]) # ‘54321’
print(s[::-3]) # ‘52’
注意
print(s[1👎-3]) # ‘’ 切片方向与索引值方向相反
print(s[2:-3:2]) # ‘’ 起始与终止索引值重合
web_site = ‘https://www.baidu.com’
print(web_site[8:])
print(’-’ * 50)
s = ‘ABCDEFG’
print(s[len(s)-2]) # ‘F’
print(s[-6:1:2]) # ‘’
print(‘FC’) # s[5:1:-3] s[-2::-3]
技能: 字符串 <–> 切片表达式
字符串的方法:
查看:
dir(str)
查看使用:
help(str.方法名)
字符串的格式化
字符串的方法
查看
print(dir(str))
判断字符串是否全是数字 # [重要]
print(‘123’.isdigit())
print(‘123a’.isdigit())
number = input(‘请输入:’)
if number.isdigit():
number = int(number)
print(‘结果:’, number, type(number))
判断字符串是否全是字母
print(‘123’.isalpha())
print(‘123a’.isalpha())
print(‘abc’.isalpha())
将字符串中的所有字母转换为大/小写
data = input(‘请输入:’)
if data.isalpha():
print(data.upper())
print(data.lower())
print(‘123a’.upper())
判断字符串是否以指定的内容开头或结尾 # [重要]
url = ‘www.baidu.com’
print(url.startswith(‘www’)) # 默认从字符串的最开头位置判断
print(url.startswith(‘bai’, 4)) # 从索引值为4位置开始向后判断
print(url.endswith(’.com’)) # 默认从字符串的最开头位置判断
print(url.endswith(‘du’, -6, -4)) # 从索引值为4位置开始向后判断
文件查找
s1 = ‘abc.txt’
s2 = ‘acc.py’
s3 = ‘bc.txt’
s4 = ‘bcd.py’
print(s1.endswith(’.txt’))
print(s2.endswith(’.py’))
print(s2.startswith(‘a’))
去除字符串的空白字符或指定字符 # [重要]
s = ’ pythonjavapyppp ’
print(s)
print(s.lstrip())
print(s.rstrip())
print(s.strip())
new_s = s.strip()
print(new_s.strip(‘py’))
print(new_s.strip(‘p’))
用户在输入误操作 & 爬虫中做数据清洗
data = input(‘请输入:’)
print(data.strip())
按照指定宽度居中
print(‘python’)
print(‘python’.center(10)) # 10个宽度居中,默认用空格填充
print(‘python’.center(10, '’)) # 10个宽度居中,用填充
print(‘python’.center(5)) # 宽度小于字符串的长度无效
场景:内容的居中显示
使用新字符替换旧字符 # [重要]
s = ‘p y t h o n’
print(s.replace(’ ', ‘’)) # 默认全部替换
print(s.replace(’ ', ‘’, 2)) # 替换2个
print(s.replace(‘a’, ‘A’)) # 不存在则不替换
计字符串中某个字符出现的次数 # [重要]
s = ‘banana’
print(s.count(‘a’))
print(s.count(‘a’, 2, -1))
print(s.count(‘n’))
print(s.count(‘p’))
从左至右查找字符的索引值
s = ‘banana’
print(s.index(‘a’))
print(s.index(‘a’, 2))
print(s.index(‘a’, -2))
问题
print(s.index(‘c’)) # 查找字符不存在,产生ValueError
print(s.find(‘a’, 2)) # [重要]
print(s.find(‘a’, -2))
print(s.find(‘c’)) # 查找字符不存在,返回-1