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