字符串
1.什么是字符串(str)
-
字符串是容器型数据类型:将
''
/""
/''''''
/""""""
作为容器的标志,里面直接是多个符号,每一个符号就是字符串的一个元素:‘元素1元素2元素3…’ -
字符串不可变;字符串是有序的
-
元素 - 所有的符号都可以作为字符串的元素,字符串中的元素又叫字符。字符分为普通字符和转义字符两种
1)字符串的元素(字符)可以是任意符号
str1 = 'sh三到四好【】[[;!423'
print(str1) # sh三到四好【】[[;!423
2)空字符串
str2 = ''
str3 = ""
str4 = ''''''
str5 = """"""
print(len(str4), type(str4)) # 0 <class 'str'>
print(len(str5), type(str5)) # 0 <class 'str'>
3)多行字符串
str1 = """adc
123 ====
"""
print(str1)
4)字符串是有序的
print('abc' == 'cba') # False
2.字符串中的元素 - 字符
- 普通字符 - 符号在字符串中表示符号本身的字符就是普通字符
- 转义字符 - 在特定符号前加
\
表示特殊功能或者特殊意义的字符
\n
- 换行\t
- 水平制表符(相当于tab键)\'
- 表示一个普通的单引号\"
- 表示一个普通的双引号\\
- 表示一个普通的反斜杠\u四的16进制数
- 编码字符(四的十六进制数是字符的编码值)
str1 = '\tabc\n123'
print(str1)
str2 = 'That\'s cool'
print(str2) # That's cool
str3 = "It's OK"
print(str3) # It's OK
str4 = 'I say:"cool!"'
print(str4) # I say:"cool!"
str5 = 'C:User\\name\\test\\小明'
print(str5) # C:User\name\test\小明
str6 = '\u4e00 abc'
print(str6)
3.字符编码
- 计算机在存储数据的时候只能存数字(数字的二进制补码)
- 为了能够让计算机存储字符,给每个字符对应了一个固定的数字。每次在存储这个字符的时候就存储这个字符对应的数字,每个字符对应的数字就是这个字符的编码值
1)十进制
基数:0 ~ 9
表示方式:直接写
转换函数:print()
num = 23498750
print(num) # 23498750
2)二进制
基数:0 、1
表示方式:加前缀0b/0B
转换函数:bin()
num = 0b10011
print(num) # 19
3)八进制
基数:0 ~ 7
表示方式:加前缀0o/0O
转换函数:oct()
num = 0o5461
print(num) # 2865
4)十六进制
基数:0 ~ 9,a ~ f(A ~ F)
表示方式:加前缀0x/0X
转换函数:hex()
num = 0xff
print(num) # 255
4.编码值 - 记录字符和数字对应关系的表
常用的编码表:ASCII码表、Unicode编码表(Python)
- ASCII码表:
- 只记录了美国的符号(这里没有记录中文)
- 数字字符在大写字母的面前,大写字母在小写字母的面前,并且这三类符号之间不连续
- Unicode编码表:
- 是ASCII码表的扩展(包含了ASCII码表),记录了世界上所有的国家所有的民族的所有语言的符号
- 中文范围:4e00 ~ 9fa5
5.编码值的使用
1)chr函数
chr(编码值) - 获取编码值对应的字符
print(chr(97)) # a
print(chr(0x5fa5)) # 徥
练习:打印所有的中文
for i in range(0x4e00, 0x9fa5+1):
print(chr(i), end=' ')
2)ord函数
ord(字符)
print(ord('李'), ord('云'), ord('龙'))
3)编码字符
\u四位的16进制编码值
c = '豅'
if '\u4e00' <= c <= '\u9fa5':
print('中文') # 中文
字符串相关操作和相关函数
1.查 - 获取字符
字符串获取字符和列表获取元素的语法一样
str1 = 'How are you? I am fine! Thank you, and you?'
print(str1[2], str1[-1]) # w ?
注意:一个转义字符的长度是1
str1 = '\tabc\n123\u4e00'
print(str1[1], str1[-2]) # a 3
print(str1[1:6])
print(str1[-1:2])
print(str1[1:7:2])
print(str1[-1::-2])
print(str1[2:])
for i in str1:
print(i)
2.+、*
print('abc' + 'hello') # abchello
print('abc' * 3) # abcabcabc
3.比较运算
- 两个字符串比较大小,比较的是第一对不相等的字符的编码值大小
- 两个字符比较大小,比较的是字符的编码值的大小
已知字符X:
- 判断是否是数字字符:
'0' <= X <= '9'
- 判断是否是小写字母:
'a' <= X <= 'z'
- 判断是否是大写字母:
'A' <= X <= 'Z'
- 判断是否是字母:
'a' <= X <= 'z' or 'A' <= X <= 'Z'
- 判断是否是中文:
'\u4e00' <= X <= '\u9fa5'
print('abc' == 'cba') # False
print('abc' > 'Abc123') # True
print('你好' > 'hello') # True
练习1:已知一个字符串,统计字符串中中文出现的次数
str1 = '-==sh是uM09K你好!'
count = 0
for i in str1:
if '\u4e00' <= i <= '\u9fa5':
count += 1
print('中文出现的次数:', count) # 中文出现的次数:3
练习2:判断指定字符串是否是纯数字字符串
str1 = input('输入一个字符串:')
for i in str2:
if not '0' <= i <= '9':
print('不是纯数字字符串')
else:
print('是纯数字字符串')
练习3:提取字符串中所有的大写字母
str1 = '-==sh是uM09K你好!'
str2 = ''
for i in str1:
if 'A' <= i <= 'Z':
str2 += i
print(str2) # MK
4.in 和 not in
字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串
print('a' in 'abc123') # True
print('abc' in 'abc123') # True
print('ac' in 'abc123') # False
5.相关函数
- len(字符串)
- str(数据) - 将数据转换成字符串(任何类型的数据都可以转换成字符串;转换的时候是直接在数据的打印值外面加引号)
str(23) # '23'
str(12.5) # '12.5'
str(True) # 'True'
str([10, 20]) # '[10, 20]'
str({'a': 10, 'b': 20}) # "{'a': 10, 'b': 20}"