1. 什么是字符串(str)
- 字符串是容器型数据类型;
将’’、""、’’’’’’、""""""作为容器的标志,里面直接是多个符号,每一个符号就是字符串的一个元素:‘元素1元素2元素3…’ - 字符串不可变; 字符串是有序的
- 元素 - 所有的的符号都可以作为字符串的元素;字符串中的元素又叫字符。字符分为普通字符和转义字符两种。
“”"
1) 字符串的元素(字符)可以是是任意符号
str1 = ‘是世界上就sjaks,.=-!~。;【】↓?😊1232347’ print(str1)
2) 空字符串
str2 = ‘’ str3 = “” str4 = ‘’’’’’ str5 = “”"""" print(type(str4), len(str4)) # <class ‘str’> 0
3) 多行字符串
str1 = “”“abc 123"”" print(str1)
str2 = ‘abc\n123’ print(str2)
4)字符串是有序
print(‘abc’ == ‘acb’) # False
2. 字符串中的元素 - 字符
“”" 1)普通字符 - 符号在字符串中表示符号本身的字符就是普通字符 2)转义字符 - 在特定符号前加\表示特殊功能或者特殊意义的字符 \n - 换行 \t - 水平制表符(相当于tab键) ’ - 表示一个普通的单引号 " - 表示一个普通的双引号 \ - 表示一个普通的反斜杠 “”"
\u4四的16进制数 - 编码字符(四的16进制数是字符的编码值)
str1 = ‘\tabc\n123’ print(str1)
str2 = ‘It’s OK’ print(str2)
str3 = “It’s OK”
str4 = “I say:“good!”” print(str4)
str5 = ‘C:User\name\test\小明’ print(str5)
str6 = ‘\u4e00abc’ print(str6)
3. 字符编码
“”"
- 计算机在存储数据的时候只能存数字(数字的二进制补码)
- 为了能够让计算机存储字符,给每个字符对应了一个固定数字。每次在存在这个字符的时候就存储这个字符对应的数字。
每个字符对应的数字就是这个字符的编码值。 “”"
4. 编码表 - 记录字符和数字对应关系的表
“”" 常用的编码表: ASCII码表、Unicode编码表(Python)
-
ASCII码表: a. 只记录了美国的符号(这里没有记录中文) b. 数字字符在大写字母的前面,大写在小写字母的前面。并且这三类符号之间不连续。 -
Unicode编码表: a. 是ASCII码表的扩展(包含了ASCII码表),记录了世界上所有的国家所有的民族的所有语言的符号 b. 中文范围:4e00 ~ 9fa5 “”"
5.编码值的使用
1) chr函数
chr(编码值) - 获取编码值对应的字符
print(chr(97)) # ‘a’ print(chr(0x5fa5)) # 徥
练习:打印所有中文 num = 0 for x in range(0x4e00, 0x9fa5+1): num += 1 print(chr(x), end=’ ') if num == 30: print() num = 0
print()
for x in range(0x2800, 0x28ff+1): print(chr(x), end=’ ') print()
2) ord函数
ord(字符) - 获取字符编码值
print(ord(‘余’), ord(‘婷’))
3) 编码字符
\u四位的16进制编码值
print(‘a\u0061’) # aa c = ‘看’ if ‘\u4e00’ <= c <= ‘\u9fa5’: print(‘中文!’)
if ‘一’ <= c <= ‘龥’: print(‘中文!’)
1. 查 - 获取字符
字符串获取字符和列表获取元素的语法一样
str1 = ‘how are you? i am fine! thank you! and you?’ print(str1[2], str1[-1])
注意:一个转义字符的长度是1
str1 = ‘\tabc\n123\u4e00’ print(str1[1], str1[-2]) print(’--------------------------------------’) print(str1[1:6]) # ‘abc\n1’ print(str1[-1:2]) # ‘’ print(str1[1:7:2]) # ‘ac1’ print(str1[-1::-2]) # ‘一2\nb\t’ print(str1[2:]) # ‘bc\n123\u4e00’
print(’--------------------------------------’) for x in str1: print(x)
2. +、*
print(‘abc’ + ‘hello’) # ‘abchello’ print(‘abc’ * 3) # ‘abcabcabc’ print(’===\n’ * 3)
3. 比较运算
“”"
- 两个字符串比较大小,比较的是第一对儿不相等字符的编码值的大小
- 两个字符比较大小,比较的是字符的编码值的大小
已知字符X: 判断是否是数字字符: ‘0’ <= X <= ‘9’ 判断是否是小写字母: ‘a’ <= X <= ‘z’ 判断是否是大写字母: ‘A’ <= X <= ‘Z’ 判断是否是字母: ‘a’ <= X <= ‘z’ or ‘A’ <= X <= ‘Z’ 判断是否是中文: ‘\u4e00’ <= X <= ‘\u9fa5’ “”" print(‘abc’ == ‘acb’) # False print(‘abc’ > ‘Zbc123’) # True print(‘你好’ > ‘hello’) # True
练习1:已知一个字符串,统计字符串中中文出现的次数 str1 = ‘-==sh是uM09K你好!’ count = 0 for x in str1: if ‘\u4e00’ <= x <= ‘\u9fa5’: count += 1 print(‘中文出现的次数:’, count)
练习2:判断指定字符串是否是纯数字字符串 ‘234445’ -> 是 ‘122h2333’ -> 不是 str1 = ‘23j4445’ for x in str1: if not ‘0’ <= x <= ‘9’: print(‘不是纯数字字符串’) break else: print(‘是纯数字字符串’)
练习3: 提取字符串中所有的大写字母 ‘-==sh是uM09K你好!’ -> ‘MK’ str1 = ‘-==sh是uM09K你好!’ str2 = ‘’ for x in str1: if ‘A’ <= x <= ‘Z’: str2 += x print(str2)
- in 和 not in
字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串 print(10 in [10, 20, 30]) # True print([10, 20] in [10, 20, 30]) # False
print(‘a’ in ‘abc123’) # True print(‘abc’ in ‘abc123’) # True print(‘ac’ in ‘abc123’) # False
5.相关函数 1)len(字符串) 2)str(数据) - 将数据转换成字符串(任何类型的数据都可以转换成字符串;转换的时候是直接在数据的打印值外面加引号) x = 23 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}”
str
|