总结
1. 字符串和字符
-
什么是字符串
字符串是容器型数据类型(序列), 将单引号或者双引号或者3个单引号或者3个双引号作为容器标志, 里面每个独立的符号就是字符串的一个元素
字符串是不可变的(不支持增删改), 字符串是有序的(支持下标操作)
字符串的元素:引号里面的每个符号都是字符串的元素,字符串的元素又叫字符.字符分为两种:普通字符和转义字符
# 1.空串 empty1 = '' empty2 = "" empty3 = '''''' empty4 = """""" print(type(empty1), len(empty1)) # <class 'str'> 0 print(type(empty2), len(empty2)) # <class 'str'> 0 print(type(empty3), len(empty3)) # <class 'str'> 0 print(type(empty4), len(empty4)) # <class 'str'> 0 # 2.字符串的容器标志 #''和""没有区别, '''''''和"""""""没有区别 # ''和""里面的内容不能通过直接按回车换行,只能通过转义字符换行; ''''''和""""""里面的内容可以通过回车直接换行
-
字符串的元素 - 字符
-
普通字符 - 在字符串中表示符号本身的字符
-
转义字符 - 使用\和其他符号一起来表示特殊功能和意义的字符
常用的转义字符: \n(换行), \t(水平制表符), \’(表示一个普通的单引号), \"(表示一个普通的双引号),
\\ (表示一个普通的反斜杠)
-
阻止转义 - 让字符串中所有的转义字符功能消失(让一个字符串中每一个符号都表示符号本身), 在字符串前加r/R: r’’, R’’
-
转义字符 - 编码字符
str1 = 'abc\n123' print(str1) str2 = '\tabc123' print(str2) str3 = 'it\'s me' print(str3) str4 = "it's me" str5 = 'is "A"' str6 = 'C:user\name\next.txt' print(str6) str7 = 'C:user\\name\\next.txt' print(str7) str8 = r'C:user\name\next.txt' str9 = '\tabc\t123\'mn\"nn\\00' print(len(str9)) str10 = 'abc\u4e40123' print(str10)
-
-
编码值 - 字符编码
-
编码值 - 计算机在储存符号的时候其实存的是这个符号对应的固定数字,这个数字就是符号对应编码值
-
编码表 - 将字符和数字一一对应的表
ASCII码表 - 总共有128个符号, 只有美国常用符号,不包括中文, 数字在字母的前面,大写字母在小 写字母前面(A-65, a-97), 大写字母和小写字母之间有间隙
Unicode编码表(python) - Unicode编码表中包含ASCII码
Unicode编码表: 包含了目前世界所有国家所有民族的所有语言符号(万国码)
中文编码范围: 4e00 ~ 9fa5
-
2.计算机基础
-
内存单位
位(bit) - 计算机内存最小单位
1字节(byte) = 8位(bit) - 程序申请内存的最小单位
1Kb = 1024字节
1Mb = 1024Kb
1G = 1024Mb
1T = 1024G -
进制
计算机中数字常见进制有4种: 2进制, 8进制, 10进制, 16进制
-
十进制
基数: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
进位: 逢十进一
位权: 10**(N-1)
表达方式: 直接写 -
二进制
基数: 0, 1
进位: 逢二进一
位权: 2**(N-1)
表达方式: 加前缀0b/0B -
八进制
基数: 0, 1, 2, 3, 4, 5, 6, 7
进位: 逢八进一
位权: 8**(N-1)
表达方式: 加前缀0o/0O -
十六进制
基数: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a/A, b/B, c/C, d/D, e/E, f/F
进位: 逢十六进一
位权: 16**(N-1) 1f = f16**0 + 116**1 = f + 16 = 15 + 16 = 31
表达方式: 加前缀0x/0X
-
3. 字符串相关操作
-
查
- 字符串获取字符和列表获取元素的语法一样
一个空格是一个字符
message = 'you see see one day day!' print(message[2]) # u print(message[4]) # s print(message[-1]) # ! print(message[1:5]) # ou s print(message[:-5:-1]) # !yad
- 一个转义字符是一个字符,长度是1
tr1 = '\tabc\u4fa9 123' print(str1[6]) # 1 for x in 'ab\u67afc': print(x) # a b 枯 c
-
运算符
- 字符串1 + 字符串2 - 将两个字符串拼接产生一个新字符串
print('abc' + '123' ) # abc123
- 字符串 * N - 将字符串重复N次产生一个新的字符串
print('abc' * 3) # abcabcabc print('abc' == 'acb') # False print('a' == '\u0061') # True
-
比较大小: >, <, >=, <=. 两个字符串比较大小比较的是第一对不相等的字符编码值的大小
是否是数字字符: ‘0’ <= char <= ‘9’
是否是小写字母: ‘a’ <= char <= ‘z’
是否是大写字母: ‘A’ <= char <= ‘Z’
是否是字母: ‘a’ <= char <= ‘z’ or ‘A’ <= char <= ‘Z’
是否是中文: ‘\u4e00’ <= char <= ‘\u9fa5’
print('abc' > 'cd') # False
练习: 提取一个字符串中所有的数字字符
str1 = 'sh函数78sk--2o' new_str = '' for x in str1: if '0' <= x <= '9': new_str += x print(new_str)
练习: 提取中文
# 方法一 str2 = 'sh函数78sk--好2o' new_str1 = '' for x in str2: if '\u4e00' <= x <= '\u9fa5': new_str1 += x print(new_str1) # 方法二 result = ''.join([x for x in str2 if '\u4e00' <= x <= '\u9fa5']) print(result)
-
in 和 not in
字符串1 in 字符串2 - 判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
print('abc' in 'a1b2c3') # False print('abc' in 'abc123') # True print('1' in 'abc123') # True
-
相关函数:len, str
- str(数据) - 将数据转换成字符串(任何类型的数据都可以转换成字符串, 转换的时候直接在数据的打印值外面加引号)
print(str(100)) # '100' list1 = [1, 2, 3] print(str(list1)) # '[1, 2, 3]' dict1 = {'name': '小明', 'age': '18'} print(str(dict1)) # "{'name': '小明', 'age': '18'}"
4. 字符串相关方法
-
join
字符串.join(序列) - 将字序列中的元素使用指定字符串连接产生一个新的字符串. 序列中的元素必须是字符串
names = ['小明', '张三', '李四'] result = ''.join(names) print(result) # 小明张三李四 result = '+'.join(names) print(result) # 小明+张三+李四 message = 'abc' print('.'.join(message)) # a.b.c num = [10, 9, 78, 67] result = ''.join([str(x) for x in num]) print(result) # 1097867 list1 = ['name', 23, True, '你好', '哈哈'] result = '+'.join([x for x in list1 if type(x) == str]) print(result) # name+你好+哈哈
-
split
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割
字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点进行切割
str1 = 'how are you? i am fine, thank you! and you?' result = str1.split(' ') print(result) # ['how', 'are', 'you?', 'i', 'am', 'fine,', 'thank', 'you!', 'and', 'you?'] result = str1.split('you') print(result) # ['how are ', '? i am fine, thank ', '! and ', '?'] print('abca123amna'.split('a')) # ['', 'bc', '123', 'mn', ''] str2 = 'abc12mn12xy12==12++' print(str2.split('12', 2)) # ['abc', 'mn', 'xy12==12++']
-
replace
字符串1.replace(字符串2, 字符串3) - 将字符串1中所有字符串2都替换成字符串3
字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前N个字符串2替换成字符串3
str1 = 'how are you? i am fine, thank you! and you?' result = str1.replace('you', 'me') print(result) # how are me? i am fine, thank me! and me? result = str1.replace('you', 'me', 1) print(result) # how are me? i am fine, thank you! and you?