文章目录
字符串
一、什么是字符串
- 容器
- 容器标识’’、""、’’’ ‘’’、""" “”"
- 容器里面的每个独立字符都是字符串的元素
- 字符串的元素又叫字符
- 不可变
- 有序
s1 = '🎈'
s2 = "abc,你好?123 ~"
s3 = '''
你
好
呀
'''
print(s3)
二、字符
- python中有字符的概念,但没有对应的数据类型,如果需要字符,就用长度为1的字符串来表示
- 字符串中的元素/符号/字符分两种,普通字符和转义字符
2.1 普通字符
- 除了转义字符以外的字符都属于普通字符
- 普通字符在字符串中表示这个符号本身
2.2 转义字符
- 通过 \加其它字符 的形式存在,在字符串中有特殊功能或特殊意义
- 看上去像两个字符,其实是一个字符
2.2.1 常见转义
- 换行\n (相当于回车)
- 水平制表\t (相当于tab键)
- 单引号 ’
- 双引号 "
- 一个反斜杠 \
s4_1 = 'abc\'123'
s4_2 = "abc'123"
print(s4_1 == s4_2) # True
s5 = 'abc"123'
2.2.2
- 16进制编码字符 \u四位的16进制数
s6 = 'abc\u4ed123'
print(s6) # abc仑23
字符编码
- 计算机能直接存储的数据只有数字
- 而且存的是数字的补码
- 在保存文本数据时,每个文本符号都会对应一个数字,即编码值
- 字符编码表:ASCII码表、Unicode编码表
ASCII
- 128个字符:0~127
- 数字09:4857
- 大写字母AZ:6590
- 小写字母az:97122
Unicode
- ASCII的扩展
- 中文范围:4e00~9fa5
print('\u4e00 ~ \u9fa5') # 一 ~ 龥
chr(编码值)
- 获取指定编码值对应的字符
print(chr(0x4e00))
print(chr(97))
ord(字符)
- 获取字符的编码值
三、获取字符
- 字符串获取字符的语法和列表一样
3.1 获取单个字符
- 字符串[下标]
- 一个空格也是一个字符
- 一个转义字符是一个字符
print(len('abc\n123')) # 7
print('abc\t123'[4]) # 1
print(len('\u4e00')) # 1
3.2 切片
四、运算
4.1 数学运算
-
+
字符串1 + 字符串2
合并产生一个新的字符串
str1 = 'abc'
str2 = '123'
print(str1 + str2) # 'abc123'
- *
字符串N / N字符串
字符串重复产生N次
print('hello world\n' * 10)
4.2 比较运算
- ==、!=
- >、<、>=、<=
两个字符串比较大小,比较的是第一对不相等的字符的大小
比的是字符编码值的大小
print('abc' > '12345') # True
print('一' > 'z') # True
比较运算符的应用:判断字符的类型
判断字符是否数字:48 <= ord(字符) <= 57
或者这样:'0' <= 字符 <= '9'
# 练习:
# 分别统计字符串中中文个数和字母个数
str1 = 'hsjj数据是2823竭尽所能SJJ==-2...数kkl'
count_cn = 0
count_ab = 0
for i in str1:
if '\u4e00' <= i <= '\u9fa5':
count_cn += 1
elif 'a' <= i <= 'z' or 'A' <= i <= 'Z':
count_ab += 1
print(count_cn, count_ab)
# 判断一个字符串中是否有数字字符,有打印True, 没有打印False
str2 = 'bans江苏省'
str3 = '三角函数sss223=='
for i in str3:
if '0' <= i <= '9':
print(True)
break
else:
print(False)
4.3 in 和 not in
字符 in 字符串
判断字符串中是否存在指定的字符
print('a' in 'abc') # True
字符串1 in 字符串2
判断字符串1是否是字符串2的字串
print('abc' in '123abcde') # True
print('abc' in '1a2b3c45') # False
五、相关函数
- max()、min()、sorted()
print(max('dfgaersxrg')) # x
print(min('dfgaersxrg')) # a
print(sorted('dfgaersxrg')) # 返回列表['a', 'd', 'e', 'f', 'g', 'g', 'r', 'r', 's', 'x']
-
len()
求长度 -
str()
str(数据)
所有类型的数据都可以转
直接在数据打印值最外层加引号
print(str([1, 2, 3])) # '[1, 2, 3]'
print(len(str([1, 2, 3]))) # 9 括号、逗号、空格都成了字符串中的字符元素
- 好用的 eval()
自动检测格式
将列表格式的字符串转化成列表,或将字典格式的字符串转成字典
lst = [1, 2, 3]
lst_str = str(lst)
lst_str_lst1 = list(lst_str)
print(lst_str_lst1) # ['[', '1', ',', ' ', '2', ',', ' ', '3', ']']
lst_str_lst2 = eval(lst_str)
print(lst_str_lst2) # [1, 2, 3]
六、常用字符串方法
- 字符串.count(str/chr)
- 字符串.index()
第一次出现的位置 - 字符串.join(序列)
将序列中的元素通过原字符串连接
lst1 = ['d', 'e', 'f', 1, 2, 3]
lst2 = ['d', 'e', 'f']
- print(’-’.join(lst1)) # 报错,序列中的元素需要是字符串
print('-'.join(lst2)) # d-e-f
print('-'.join([str(item) for item in lst1])) # d-e-f-1-2-3
-
字符串.split(str,N)
段数比切割点多1,所以经常得到空字符串
切前N次 -
字符串.replace(str1, str2, N)
将str1换成str2
将前N个替换