"==========曹志华=========="
1.什么是 字符串
字符串:是python内置的一种容器型数据类型,不可变、有序。
把''号作为容器,里面可以根据情况放多个字符。
字符串里边的内容叫元素或者字符。
不可变:指的是内容不能变,字符的顺序不能变。
有序:一旦字符串确定,字符串中字符的位置就固定(每个字符是第几个是确定的)
2.字符串中的内容 = 字符
python中只有字符的概念,没有字符对应的数据类型。
字符串的基本单元就是字符,又叫字符串的元素。
a.基本字符-数字-字母/ 后面跟不同的符号,来表示特殊功能或者特殊意义的字符。
\n 换行
\'表示一个单引号
\ "表示双引号
\\ 两个在一起,表示一个,不是用来转义用.
\t 制表符
阻止转义:在字符串的前面加 r 或 R,可以阻止字符串转义
str2 = 'abc\n123\'\y"z' #abc
#123'\y"z
str3 = r'\abc\n123\'\y"z' # \abc\n123\'\y"z
print(str2, str3)
c.编码字符: \u 后边跟4位的十六进制数,来表示一个字符。这个4位的十六进制数对应的值是字符的编码值。
3.字符编码:
python中的字符采用的是unicode编码
计算机存数据的时候,只能存数字,而且存的是数字的补码(是以二进制的格式存储的)
100 # 十进制数
print(bin(100)) #bin(数字)---获取指定数字的 ** 二进制**。
print(bin(100))
print(oct(100)) # oct(数字)----获取指定数字的 八进制。
print(hex(100)) # hex(数字)------获取指定数字的 十六进制。
编码:每个字符在计算机中存储的时候都会对应一个固定且唯一的数字,这个数字就是这个字符的编码。
每个字和数字的一一对应关系就是编码表,常见的编码表有:ASCII编码表和Uniconde编码表
** ASCII**表只对数字字符、英文字母、英文符号进行编码。
Unicode,编码表示是对ASSII表的扩充。包含世界上所有的符号,文字。 4e00-9fa5(汉子范围)
chr(编码值) #获取编码值对应的字符。
ord(字符) 获取字符对应的编码值。 注意:字符值就是长度是1的字符串。
print(ord('曹'),ord('志'),ord('华'))
print(chr(100))
# 列出所有汉字。
num = 0
for code in range(0x4e00,0x9fa5):
print(chr(code), end='')
num += 1
if num % 20 == 0:
print()
"====================曹志华===================="
1.获取字符——取字符串内容
a.获取单个字符
a-语法:字符串【下标】 = 根据下标获取字符串中对应的字符,结果就是获取到的字符。
b-说明:字符串 - 可以是字符串值,也可以是变量,也可以是字符串的表达式都可以。
【 】 - 固定写法
下 标 - 又叫索引,指的是字符串中 字符 的位置。从0开始,到字符串的长度减1。
0,1、2、3、4,0表示第一个字符。
小标范围还可以是-1、-2、 -3、 -4 一直到字符串长度减1.-1表示倒数第一个。
c.注意:获取单个字符串的时候,下标不能越界。
str = 'python' # p 0 、-6 y 1、-5 t 2、-4
result = 'python'[3]
print(result)
print(str [0], str [-6], str[-1])
a-语法:字符串【开始下标:结束标语;步长】-从开始下标开始i,获取到结束下标前为止,每次下标的值增加步长。
和range(1, 10, 2)==(1 3 5 7 9)差不多
b-说明:字符串【开始下标:结束标语;步长】
【】、: —— 都是固定写法。
开始下标、结束下标——下标值,开始下标可以取到,结束下标对应字符一定取不到。
步长 —— 必须是整数,可以是正的、也可以是负的。
c-注意:下标可以越界。
如果步长是正的,从前往后获取。开始下标对应的字符要在结束下标对应的字符前才能获取到值。
如果步长是负的,从后往前获取。开始下标对应的字符要在结束下标对应的字符的后面才能获取到值。
str2 = 'abcdef123456'
print(str2[0:4:1])
print(str2[-2:-10:-1]) #
print(str2[0:100:1]) #下标可以越界。abcdef123456
print('hello python'[1:-2:3]) # eoy
切片的语法可以对步长,开始下标和结束下标可以省略:
1.省略步长(步长默认为1)
字符串[开始下标:结束小标] == 字符串【开始下标:结束下标:1】
str2 = 'abcdef123456'
print(str2[2:5]) # c e d
print(str2[-4:-1]) # 3 4 5
2.省略开始下标
字符串【:结束小标:步长】 —— 如果步长是正,从前往后取,如果是负,从后往前取。
print(str2[:3:1]) abc
print(str2[:3:-1]) 654321fd
3.省略结束下:
字符串【开始下标::步长】—— 如果步长为正,取到最后一个,如果步长为负,从后往前取,取到第一个字符位置。
print(str2[2:]) # cedf123456
print(str2[2::-1]) #cba
4.两个一起省略:
print(str2【:】) # abcdef123456
print(str2[::-1] # 654321fedcba
'''
num = 123456
num1=int(str(num)[::-1])
print(num1)
1.3遍历字符串——一个一个的取出所有的字符
'''
方法一:直接遍历。
for 变量 in 字符串:
循环体
for char in str2:
print(char)
方法二:通过遍历下标,来遍历字符串
for 变量 in range(字符串长度):
字符串[变量]
str3 = 'when i was yang '
#len(字符串)—— 获取字符串长度,返回一个数字。字符串长度指字符串的字符个数。
for index in range(len(str3))
print(index,str3[index])
index = 0
while index < len(str3)
print(index,str3[index]
index += 1
"=====================曹志======================
a.数学运算:字符串支持加法运算和乘法运算
语法:字符串1+字符串2 —— 把他们拼接在一起,产生一个新的字符串。
new_str='abc'+'123'
print(new_str) #abc123
``` python
new_str += '你好' #abc123你好
注意:字符串只能和字符串相加,不能是其他类型数据。数字和字符串不能混合相加。
···
print(new_str+'=========')
···
乘法运算:
语法:字符串正整数/正整数字符串 —— 指定的字符串重复指定次数,产生一个新的字符串
print('abc'*2) # abc abc
print('*'*10) #************
比较运算:字符串支持所有的比较运算符
字符串1 == 字符串2 ,字符串1 != 字符串2 ——判断两个字符串是否相等。
print('abc' == 'abc') # True
print('abc' == 'bcb') # False
两个字符串比较大小:让两个字符串中相同位置的字符一一比较,找到第一对不相等的字符,判断编码值的大小。
print('abcdef' > 'abz') # False
print('abc1' > 'abc') # True
判断一个字符是否是字母,'a'<=char <= 'z' or 'A' <= char <='Z'
判断一个字符是否是数字:'0' <= char <= '9'
判断您是否是中文:(4e00~9fa5): ('\u4e00' <= char <= '\u9fa5' / 044e00 <= ord(char) <= 0x9fa5
print('\u4e00' <= char <= '\u9fa5')
练习:输入一个任意的字符串,统计输入的内容中字母的个数
例如:输入‘abc123你好世界end~~~’ 结果是6 统计字母有多少个。
str1 = input('请随便输入:')
count = 0
for x in str1:
if 'a'<= x <= 'z' or 'A' <= x <='Z':
print(x)
count+=1
print('字母的个数', count)
3.in 和 not in 操作
字符串1 in 字符串2 —— 判断字符串1是否在字符串2中,(判断字符串2中是否包含字符串1)
not in 判断字符串2是否不包含字符串1(取反)
print('abc' in '1223abc====') #True
print('abc' in 'a122bc======') # False
print('abc' not in 'a122bc======') #True
print('@' in 'ad@s') #True
4.常用内置函数
len(字符串) —— 字符串长度
str(数据) —— 将其他数据转换成字符串。 所有类型的数据都可以转换成字符串。 所有的数据都可以转换成字符串,转换的时候直接在数据外面加引号“”。
print(int('+23')) #去掉引号后是整数,就可以转换成整型。
print(float('12.4')) #转换成浮点数,去掉引号后本身就是就是一个数字的字符串,小数、整数都可以。
print(bool('bac')) #True
print(bool('')) #False ,字符串转换成bool值时,只有空串,才会转换成False,其他的都是True。
"=========================曹志华======================="
5.字符串的对象方法
字符串.方法()
字符串.capitalize() —— 将字符串首字母大写i
str4 = 'hello'
new_str = str4.capitalize()
print(new_str)
字符串 .center(width,fillchar)
产生一个长度为width的新字符串,新字符串中原字符串居中,剩余的用fillchar填充。
new_str = str4.center(11, '*')
字符串.ljust(width,fillchar)
new_str =
字符串. rjust(width,fillchar)
py19001 、 py19002 、 py19010
字符串.zfill(width) ——产生一个宽度是width的字符串,原字符串在右边,前用0填充。
study_id = str(num).zfill(4)
print(study_id)
···