元组和字符串
元组
定义:作为容器型数据类型;将()作为容器标志,内含多个元素用逗号隔开。
表达式:
tuple =(1,2,3,4)
容器名 = (元素1,元素2,元素3,元素4)
特点:
-
所容纳的元素无类型要求。
-
不可变(不支持增删改),可以当作不可变的列表。
tuple1 = (1, 13, 23) print(tuple1[-1]) # 23 print(tuple1[:-1]) # (1,13) print(tuple1 * 2, tuple1 + (1, 100)) # (1, 13, 23, 1, 13, 23)(1, 100)
-
有序(支持下标操作)。
-
可以为空元组。
tuple1 = ()
-
只有一个元素的元组在表示的时候唯一的元素后面必须加逗号。
tuple1 = (a,)
-
元组的()可以省略。(代码使用无歧义时)
tuple1 = a, b, c
-
可使用多个变量直接获取元组内多个元素。
tuple1 = a, b, c print(tuple1[0], tuple1[1], tuple1[2])
字符串
定义:作为容器型数据类型;将’'或者""作为容器的标志,里面的每个符号就是字符串中每个元素。
表达式:
str1 = ‘12,23,sad’
容器名 = (元素1,元素2,元素3,元素4)
特点:
-
字符串对应的容器只能保存多个文字符号-字符。
-
引号中每个符号都是字符串的元素,任何文字符号都可以是字符串的元素(普通字符,转义字符)。字符串的元素就是字符。
str2 = 'amKN12,.。;=-+&^%函数😁♠♣' str1 = '\u9fa5' print(str2,str1)
-
不可变(不支持增删改),所有可变操作都是在创建对应的新的字符串。
-
有序(支持下标操作)。
print('abc' == 'bca') # False
-
可以是多行字符串。(多行注释在特殊位置才是注释)
str3 = '''abc''' str4 = """abc""" def func1(): # 多行注释在特殊位置才是注释 """多行注释""" """abc"""
字符
转义字符
定义:转义字符是由\和另外一个或者多个符号一起组合而成(转义符一定是\开头)。
特点:
- 在特定的符号前加上\,让这个符号在字符串中具有特殊的功能或者特殊意义。
'''
常见的转义字符:
\n - 换行
\t - 水平制表符(相当于按tab键)
\' - 表示一个普通的单引号
\" - 表示一个普通的双引号
\\ - 表示一个普通的反斜杠
'''
r字符串
定义:在字符串引号前加r或者R。
特点
-
如果表示字符串的时候在字符串最前面加r/R,可以让字符串中所有的转义字符功能消失。(r字符串中所有的字符都是普通字符)。
path = r'c:\study\abc\bin\text.txt' print(path) # c:\study\abc\bin\text.txt
编码字符
定义:所有的字符都可以表示成编码字符,
# \u四位的十六进制数
str1 = '\u4e00abc一\u0023'
print(str1) # 一abc一#
1)10进制数(生活): int()
由0~9组成的数字; 18, 16500, 22,100, 25。
2)2进制数:
由0和1组成的数字:10000, 1100,1011 ,101 。
0b1001
3) 8进制数:由0~7组成的数字:245, 002, 777, 771, 071。
0o77
16进制数:
由0~9和a~f(A~F)组成的数字:1f、abc、4e00、0ff。
0x89
字符编码
定义:为让计算机保存文字信息,就给每一个文本符号对应的一个固定的数字,每次在需要存储这个文本符号,就存储这个符号对应的数字。这个数字就是这个符号的编码值。计算机存储数据只能存数字(计算机只具备存储数字的能力)。
编码表
ASCII表
特点:
一共128个字符对应的编码值,主要包含:常用英文符号、数字、字符、字母。
(大写字母编码 = 小写字母编码 - 32)
A - 65
a - 97
Unicode编码表(Python)
特点:
Unicode又叫万国码(统一码);Unicode编码表中包含ASCII表。
(中文编码:4e00 ~ 9fa5 # 20901个符号)
编码值的应用
-
chr(编码值) :获取指定编码值对应的字符。
-
ord(字符) : 获取指定字符对应的编码值。
-
在字符串中表示字符的方式有两种:直接提供字符,也可以提供一个编码字符。
print(chr(0x4e00)) # 一 print(ord('刘'),ord('向'),ord('磊')) # 21016 21521 30922 str1 = 'a-' str2 = '\u0061\u4e00' print(str1,str2) # a- a一
# 案例:判断保存字符是否是中文 x = 'n' if '一' <= x <= '\u9fa5': print('中文') else: print('no') # 两个字符串比较大小比较的是第一对不相等字符的编码值的大小 print('abc'>'一zzzafs')
字符串基本操作
查
x = 'what is up'
print(x[0],x[-1],x[5]) # 'w p i'
print(x[1:-1:2]) # 'hti'
print(x[1:1:2]) # ''
+、*
# 字符串1 + 字符串2 - 将两个字符串合并,产生一个新的字符串
# 字符串 * N - 字符串重复N次产生一个新的字符串
str1 = 'acb'
str2 = 'sad'
result = str2 +str1
print(result) # sadacb
result = str1 * 3
print(result) # acbacbacb
in 和 not in
str1 = 'acb'
print('a' in str1) # True
print('z' in str1) # False
# 案例: 统计str1中中文的个数
str1 = '我是你爹哈哈哈asdsadas222'
count = 0
for i in str1:
if '一' <= i <= '\u9fa0':
count += 1
print(count)
# 提取字符串中所有的大写字母
str2 = '撒大苏打撒旦MDAFG==323'
# for i in str2:
# if 'A' <= i <= 'Z':
# print(i)
a = [i for i in str2 if'A' <= i <= 'Z']
print(a)