字符串综合用法
字符编码
-
二极管,导通来控制电路,只有0和1两个状态
-
计算机存储数据只能存数字(存的是数字的二进制补码)
-
为了你能让计算机存储文字符号,给每个符号对应了一个固定的数字,每次在需要存储这个符号的时候,
- 存储这个固定的数字,每个对应的那个数字就是这个符号的编码值
-
编码表 - 保存字符和字符对应编码值的表
- ASCII码表 美国信息码 (只包含美国人常用的符号 总共128个)
- 大写字母(A-65)
- 小写字母(a-97)
- 0-48
-
Unicode编码表 是对ASCII码表的扩展,包含了世界上所有国家所有名族的所有语言符号
-
Unicode编码表包含了ASCII(前128字符就是ASCII码表中的内容)
-
中文编码范围:4e00 ~ 9fa5 (2万多个)
-
ox 加十六进制
-
0000~FFFF编码范围
-
print(chr(97)) #'a'
print(chr(0x4e00)) #'一'
print(chr(0x9fa5)) #'龥'
- 编码值的应用
- chr(编码值) -获取编码值对应的字符
- ord(字符) -获取指定字符对应编码值
- 注意:字符值是长度为1 的字符串
#2 ord
#用char 将小写字母转换成大写字母
char = 'a'
print(chr(ord(char)-32))
- \u 位的16进制编码值
- hex(10进制数) -获取指定数字对应的16进制的表达方式
#如果知道字符编码值是多少,但是不知道字符是什么的时候,就可以使用编码字符来表示
str2='\u0061\u9fa5'
print(str2)
char ='是'
if '\u4e00'<=char<='\u9fa5':
print(char,'是中文字符')
获取字符
- 获取单个: 字符串[下标] 注意:字符串[开始下标:结束下标:步长]
str = '\thello\nworld!\u9fa5'
print(str[5]) #o
print(str[-1]) #龥
str1='hello world !'
for x in str1:
print(x)
for x,y in enumerate(str1):
print(x,y)
字符串运算
- 加法运算:让两个字符串合并在一起
- 乘法运算:字符串*N 让字符串重复N次
- 比较运算:比较第一对不相等的字符的编码值的大小
判断字符的性质:
是否是数字 '1' <= x <='9'
是否是中午: ’\u4e00‘ <= x <= '\u9fa5' 或者 '一' <= x <= '\u9fa5'
- str(数据) -任何类型的数据都可以转成字符串;在数据的 打印值 外面加引号
- eval(字符串) -去掉字符串的引号,获取引号中表达式的结果
#字符合法才行
#b=eval('abc') # b=abc 报错
b1=eval('10+2')
print(b1) #12
a = int(input('输入a:'))
b= int(input('输入b:'))
s=input('输入操作')
c=eval(s)
print(c)
字符串相关方法
- 字符串.join(序列) -将序列中的元素用指定的字符串连接成一个新的字符串
- 序列中元素必须字符串
list1 = ['小明', '张三', '李四']
result = '+'.join(list1)
print(result) #小明+张三+李四
nums = [11, 2, 44, 55, 66]
result = ' + '.join([str(x) for x in nums])
print(result) # 11 + 2 + 44 + 55 + 66
- 字符串1.count(字符串2) -在字符串1中统计字符串2的数量
- 字符串1.spli(字符串2) -将字符串1中所有的字符串2作为切割点对字符1进行切割
- 字符串1.spli(字符串2,N)-将字符串1中前N个字符串2 作为切割点
mag = 'how are you? i am fine thank you ,and you ?'
result = mag.split('you')
print(result) # ['how are ', '? i am fine thank ', ' ,and ', ' ?']
- 字符串1.replace(字符串2,字符串3) -将字符串1中所有字符串2都替换成字符串3
- 字符串1.replace(字符串2,字符串3,N) -将字符串1中前N个字符串2都替换成字符串3
- 字符串.strip( ) -去掉字符串前后的空白字符
msg= """
how are you? i am fine thank you ,and you ?
"""
print(msg.strip())
msg = '小/明/' #去掉前后字符
print(msg.strip('/')) #小/明
- 字符串.isupper( ) -判断字符串是否是纯大写字母字符串
- 字符串.islower( ) -判断字符串是否是纯小写字母字符串
- 字符串.isdigiy( ) -判断字符或者字符串是否全是数字字符串
- 字符串.upper( ) -小写转换成大写字母
- 字符串.lower( ) -大写转化成小写字母
格式字符串
- 占位符 % (数据1,数据2…) - ( )中的数据必须和前面占位符一一对应
- 常见的占位符:
- %s -给任何类型的数据占位
- %d -给数字占位(整数占位符,给小数,会变成整数)、
- %f -小数占位符
- %.Nf -控制保留N位小数,默认保留6位小数
# msg = '%s今年%s岁,月薪:元' % (name,age)
# print(msg)
result = 'x:%.2f' % 3.1123
print(result) #x:3.11
result = '%s年-%d时-%.2f分' % (2023-3-17,17,40)
print(result) #2003年-17时-40.00分
f - string
- 字符串最前面(引号前面)加f,就可以在字符串通过{表达式}中表达式的结果来给字符串提供内容
- {表达式:.Nf} -控制保留N位小数
- {表达式:.N%} -控制数字显示成百分比,N控制百分比的小数位数
- {表达式:,.Nf} -控制数字显示百分比,N控制小数位数 (¥)
a=100
b=2
print(f'{a}+{b}={a+b}') #100+2=102
#百分比
c = 0.98
print(f'{c:.0%}') #98%
a=102304
print(f'{a:,.2f}') #102,304.00