Python字符串的常用方法(3-3)

举报
乂氼S 发表于 2023/05/28 13:05:20 2023/05/28
【摘要】 Python字符串的常用方法(3-3)

目录


一.字符串编码格式

二.字符串的格式化

三.字符串格式化函数-format

四.Python3.6加入的新格式化方案一f-strings

五.格式化符号

六.format的使用方法

 七.字符串的特殊字符



一.字符串编码格式

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。