目录
四.Python3.6加入的新格式化方案一f-strings
一.字符串编码格式
1.什么是编码格式?
- 有一定规则的规则
- 使用了这种规则,我们就能知道传输的信息是什么意思
2.常见编码格式
- gbk中文编码
- ascII英文编码
3.通用的编码格式
- uf-8是一种国际通用的编码格式
演示:
# coding:ascii
# 当时用ASCII英文编码的时候,就无法支持中文
test_str = '我喜欢python'
print(test_str)
结果:
???python
进程已结束,退出代码0
从上面的例子中可以看出,不同的编码不一定适用于不同的国家字符,很可能会出现字符不兼容的问题,会导致一些字符无法正常显示。
拓展:
-
ascii 码 不支持中文,支持英文 ,数字 ,字母, 符号
-
gbk 国标支持中文 ,支持英文,数字,字母,符号,英文用16位, 中文用16位
-
utf-8则包含全世界所有国家需要用到的字符。所以日常我们敲代码建议使用utf-8编码,防止出现字符不兼容的问题。
二.字符串的格式化
1.什么是格式化?
- 定义:一个固定的字符串中有部分元
素是根据变量的值而改变的字符串
(通俗的来说,格式化字符串是指将
一个或多个值插入到一个字符串中,
以生成一个新的字符串,或者用来将
数据格式化为特定的文本格式以进行
显示或存储)
2.格式化使用场景与目的
- 发送邮件的时候
- 发送短信的时候
- App上发推送的时候
- 对于重复性很多的信息,通过格式化
的形式,可以减少代码的书写量
3.根据类型定义的格式化
- 字符串格式化使用操作符%(也称为
格式符)来实现 - 'my name is %s,my age is %s'%,
(sll',18)-引号的部分为格式化
字符串 - 括号的部分-格式化字符串对应
符的变量,变量与格式符按顺序
一一对应,数量保持一致,超过
1个格式化变量用小括号包裹 - 格式化字符串与格式符变量之间
用一个%连接,%两边有1个空
格
演示:
# coding:utf-8
print('%c' % 1020)
print('%c' % 'b')
# print('%c' % 'ba') %c只支持单个字符
print('%c' % 999999)
print('%u' % -1)
print('%f' % 1.2)
print('%f' % 3.14)
print('%f' % 14)
print('%d' % 14)
print('%d' % -14)
print('%d' % 3.14)
print('%s' % '123')
print('%s' % 123)
# print('%s' % 1.23)
print('%o' % 16)
print('%x' % 32)
# print('%x' % '123ab') 错误写法
# 正确写法
'''
number = int('12ab')
一般来说,在int()括弧内有字母是会报错的
但有一种情况是例外的
number = int('123ab', 16)
意思是说要生成16进制的数字
如果省略这个参数,int()函数将默认使用十进制。
如果字符串包含非法字符,例如字母g,
则int()函数将引发一个ValueError异常。
'''
number = int('123ab', 16)
print(number)
print('%x' % number)
结果:
ϼ
b
-1
1.200000
3.140000
14.000000
14
-14
3
123
123
20
20
74667
123ab
进程已结束,退出代码0
三.字符串格式化函数-format
1.format函数介绍
- string.format函数用来格式化字符串
- format函数不支持格式U(在 Python 中,格式字符 'u' 是 Python 2 中用于表示 Unicode 字符串的一种格式字符。然而,从 Python 3 开始,所有的字符串都是 Unicode 字符串,因此 'u' 格式字符已经不再需要了,也不再支持。)
- 使用format的字符串主体使用大括号{}来替代格式符
- 用法:string.format(data,data,data...)
format的注意事项:
- 在Python中,%s是一种通用的占位符,可以用来格式化任何类型的变量为字符串类型,而{:s}是一种格式化字符串的方式,需要接收一个字符串类型的变量作为参数。在print('%s' % 12)中,%s占位符会自动将整数类型的变量转换为字符串类型,因此可以正常输出。
以正常输出。而在print('{:s}'.format(12))中,{:s}需要接收一个字符串类型的变量作为参数,但是传入的是一个整数类型的变量,因此会抛出TypeError类型的错误。如果要使用{:s}格式化输出整数类型的变量,需要先将其转换为字符串类型
2.创建模板
# '[]'只是把它们所处的位置更直观的分隔开,使它们能更容易的区分开,实际开发中没有'[]'
{[index][:[[fill]align][sign][#][width][.precision][type]]}
'''
index:获取指定位置的元素
fill:可选参数,用于指定空白位置填充的字符
align:可选参数,与width配合使用,用于指定对齐方式<:左对齐、>:右对齐、= :只对数字类型有效, 表示数字类型右对齐,有负号则把负号放在最左侧,正数不添加符号、^:表示内容居中
sign:可选参数,用于指定有无符号数(值为'+'则表示正数加正号,负号加负号;'-'则表示正数不变,负号加负号;值为空格表示正号加空格,负号加负号)
'#':对于二、八、十六进制等则会自动加上前缀0b/0o/0x,否则不显示前缀
width:可选参数,指定所占宽度
precision:可选参数,用于指定保留的小数点位数
type:可选参数,用于指定类型
'''
演示:
# coding:utf-8
print('{:d}'.format(1))
print('{:f}'.format(1.2))
'''
print('{:s}'.format(12))
这段代码会抛出一个 TypeError 异常,因为 {:s} 格式说明符用于格式化字符串,但 12 是一个整数。
要解决这个问题,您可以使用 {:d} 格式说明符将整数格式化为十进制数,
或者使用 str() 函数将整数转换为字符串,
然后使用 {:s} 格式说明符进行格式化。
'''
结果:
1
1.200000
进程已结束,退出代码0
四.Python3.6加入的新格式化方案一f-strings
1.用法
- 定义一个变量
- 字符串前加f符号
- 需要格式化的位置使用{变量名}
- 在字符串的前面加个f才会让Python认为字符串主体内的大括号中的是一个变量(f代表format格式化)
演示:
# coding:utf-8
name = 'ds'
age = 19
like = 'python'
str_1 = f'我是{name},我的年龄是{age},我喜欢{like}'
print(str_1)
结果:
我是dx,我的年龄是19,我喜欢python
进程已结束,退出代码0
五.格式化符号
1.什么是格式化符号?
- 用于对应各种数据类型的格式化符号
2.格式化符号有哪些?
-
常见的格式化符号
格式符号 转换
%s 通过str()字符串转换来格式化
%u 无符号的十进制整数
%d 有符号的十进制整数
%o 八进制整数
%x 十六进制整数,小写字母
%X 十六进制整数,大写字母
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点实数
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
3.格式化符号的拓展:
- %c最大支持6位数证书,并且只支持单个字符
- 其他类型,%f只能输出6位小数的浮点数
- 使用int'123ab',16)可以获取16进制的数,如果省略这个参数,int()函数将默认使用十进制。如果字符串包含非法字符,例如字母g,则int()函数将引发一个ValueError异常。
- 在Python中,%s是一种通用的占位符,可以用来格式化字符串中的任何数据类型。它可以格式化字符串、数字、布尔值、列表、元组、字典等数据类型。在输出时,%s会自动根据变量的类型进行转换,因此可以方便地输出各种类型的数据。需要注意的是,在格式化字符串时,如果使用了%s占位符,那么变量的值会自动转换为字符串类型,如果希望保持原始的数据类型,可以使用其他类型的占位符,如%d、%f等。总之,%s是一种通用的占位符,支持所有的数据类型,可以方便地将不同类型的数据格式化为字符串。
六.format的使用方法
1.使用方法:format0是格式化字符串的函数,可以接受不限个参数,位置可以不按顺序。
2.使用位置参数:
- 使用位置参数format:会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1...也可以不输入数字,这样也会按顺序来填充
- 演示:
print(hello{},i an {}".format('Kevin','Tom'))
print("hello{0},i an{1}".format('Kevin','Tom'))
print("hello{0},i an{1}my name is{0}".format('Kevin',‘Tom’)
3.使用关键字参数:
- 利用key=value来实现一一对应的赋值替换
- 演示:
-
print('hello {name1}i am {name2}'.format(name1='Kevin',name2='Tom)) # hello Kevin i am Tom
- 数字格式化:保留两位小数
-
#保留2位小数 print("{:.2f}".format(3.1415926)) #3.14
4.补充说明:
- 输出花括号需要用花括号本身来转义
- 演示:
-
# coding:utf-8 str_1 = '我是{{{}}},我的年龄是{},我喜欢{}'.format('ds', 19, 'python') print(str_1)
- 结果:
-
我是{ds},我的年龄是19,我喜欢python 进程已结束,退出代码0
七.字符串的特殊字符
1.什么是转义字符?
- 字符要转成其他含义的功能,所以我们叫它转义字符
- 用法:\ + 字符
2.Python中的转义字符
- \n换行,一般用于未尾,strip对其也有效
- \t横向制表符(可以认为是一个间隔符),\t如果前面没有空格,则只会有一个空格
- \v 纵向制表符(会有一个男性符号)# 在terminal中执行才有效果
- \a 响铃 # 在terminal中才会响铃
- \b 退格符,将光标前移,覆盖(删除前一个)
- \r回车 # 会将前面的字符全部抹去然后换行,info_r = 'my name is dewei\r';print(1, info_r,info_b) # 在\r前面的字符信息都会被抹去,包括整数1
- \f 翻页(几乎用不到,会出现一个女性符号) # 在不同的解释器中不同
- \‘转义字符串中的单引号
- \" 转义字符串中的双引号
- \\ 转义斜杠
3.转义无效符
- 在python中在字符串前加r来将当前字符串的转义字符无效化注意!r
- 对字符串格式符不起作用比如%s
演示:
# coding:utf-8
info_n = 'my name \nis dewei'
print(info_n)
info_t = 'my name \tis dewei'
print(info_t)
info_v = 'my name \vis dewei' # 不同的环境得到的效果不一样,有时候会是间隔符,有时候会是男性符号
print(info_v)
info_a = 'my name \ais dewei' # 很多的转义字符它可能在我们的Python脚本里不能很好地体现出效果,只能在我们的一些调试模式下才能展现出来
print(info_a)
info_b = 'my name \bis dewei' # 会把前一个的东西删去
print(info_b)
info_r = 'my name is dewei\r'
print(1, 9999, info_r, info_b) # 在\r前面的字符信息都会被抹去,包括整数1
info_f = 'my name is dewei\f' # 在不同的解释器下,像某些特殊的符号,它的效果是不太一样的
print('f', info_f)
print('my name is \'dewei\'')
print('my name is \"dewei\"')
print('my name is \\ dewei')
# 转移无效服
print(r'my name is \\ dewei') # 使转义字符无效化
print(r'my name is %s' % 'dewei') # \r对格式化字符无效
结果:
my name
is dewei
my name is dewei
my name is dewei
my name is dewei
my nameis dewei
my nameis dewei
f my name is dewei
my name is 'dewei'
my name is "dewei"
my name is \ dewei
my name is \\ dewei
my name is dewei
进程已结束,退出代码0
4.转义字符拓展
- #很多的转义字符它可能在我们的Python脚本里不能很好的体现出效果,
只能在我们的一些调试模式下才能展现出来 - #在不同的解释器下,像某些特殊的符
号,它的效果是不太一样的
5.字符串的拓展知识
- strip('xx')去掉某个字符串
- isdigit()-是否全是数字并至少有一个字符,返回布尔类型
- isalnum()-是否全是字母和数字,并至少有一个字符,返回布尔类型
- isalpha)-是否全是字母并至少有一个字符,返回布尔类型
- center(n,'_')-把字符串放中间,两边用'_'(也可以替换为其他字符)补齐,最终长度为n