Python学习-day18-第三章:使用字符串

Python学习-day18-字符串基本操作(上)

又隔了好长一段时间未更新,唉,想找时间沉下来认认真真的学习挺不容易,总是有各种事情~~坚持,总之继续吧!本章爆发一下,加油~

简介


    你已见过字符串,并且知道如何创建它们。你还学习了如何使用索引和切片来访问字符串中的字符。本章将介绍如何使用字符串来设置其他值的格式(比如便于打印),并大致了解使用字符串方法可完成的重要任务,如拆分、合并和查找等。
3.1、字符串基本操作
    前一章说过,所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的
website = 'http://www.python.org'
print(website[-3:])
website[-3:] = 'com' #无法进行切片赋值

在这里插入图片描述


3.2、设置字符串的格式:精简版
    将值转换为字符串并设置其格式是一个重要的操作,Python提供了多种字符型串格式的设置方法,以前主要用%,左边指定一个字符串(格式字符串),右边指定要设置其格式的值。指定要设置其格式的值时,可使用单个值(如字符串或数字),也可使用元组(如果要设置多个值的格式),还可使用字典
format = "Hello ,%s . %s enough for ya?"
values = ('world','Hot')
print(format % values)

在这里插入图片描述

    上述格式字符串中的%s称为转换说明符,指出要将值插在什么地方。s意味着将值视为字符串进行设置,如果指定的值不是字符串,可通过str将值转换为字符串。其它说明符将导致其他形式的转换,例如:%.3f将值设置为包含3位小数的浮点数。


    这种格式的设置方法依然管用,且活跃在众多的代码中。另外一种解决方法是所谓的模板字符串,它使用类似于UNIX shell的语法,旨在简化基本的格式设置机制,如下所示:

from string import  Template
tmp1 = Template("Helllo, $who! $what enough for ya?")
print(tmp1.substitute(who="Mars",what="Dusty"))

在这里插入图片描述

    包含等号的参数被称为关键字参数,第6章将详细介绍这个术语。在字符串格式设置中,可将关键字参数视为一种向命名替换字段提供值的方式。

    编写新代码时,应选择使用字符串方法format,它融合并强化了早期方法的优点。使用这种方法时,每个替换字段都用花括号括起,其中可能包含名称,还可能包含有关如何对相应的值进行转换和格式设置的信息。

    在最简单的情况下,替换字段没有名称或将索引用作名称。

这一堆说的比较难理解,还是直接上代码吧!

str1 = "{},{} and {}".format("first","second","third")
print(str1)
str2 = "{0},{1} and {2}".format("first","second","third")
print(str2)

在这里插入图片描述

    然而,索引无需像上面这样按顺序排列。

str3 = "{3} {0} {1} {2} {3} {0}".format("be","or","not","to")
print("str3=   "+str3)

在这里插入图片描述

    命名字段的原理与你预期的完全相同。

from math import pi
str4 = "{name} is approximately {value:.2f}.".format(value=pi,name="π")
print("str4=   "+str4)

在这里插入图片描述

    当然关键字参数的顺序无关紧要,2f代表包含2位小数的浮点数。如果没有指定2f,结果将如下:

``` from math import pi str5 = "{name} is approximately {value}.".format(value=pi,name="π") print("str5= " + str5) ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210705110803349.png)

    Python3.6之后还可以试用一种简写,很多网上讲师主推的方式:

name = '张三'
str6 = f'The boy is {name}'
print(str6)

在这里插入图片描述


3.3、设置字符串的格式:完整版
    字符串格式设置涉及的内容很多,即使是完整版也无法探索所有细节。这里的主要思想是针对字符串调用方法format,并提供要设置的值。字符串包含有关如何设置格式的信息,而这些信息是使用一种微格式指定语言(mini-language)指定的。每个值都被插入支付穿中,已替换花括号括起的替换字段。要在最终结果中包含花括号,可在格式字符串中使用两个花括号{{}}来指定。(就是结果中要求带大括号的字符串要再套一层。)
     又一段云里雾里~~还是上代码比较舒服。
str7 = "{{ceci n'est pas une replacement field}}"
print(str7)
str8 = "{{ceci n'est pas une replacement field}}".format()
print(str8)

在这里插入图片描述

    以下是概念:

    字段名:索引或标识符,指出要设置哪个值的格式并使用结果来替换该字段。除指定值外,还可指定值的特定部分,如列表的元素。

    转换标志:跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)、a(表示ascii)。如果指定了转换标志,将不使用对象本身的格式设置机制,而使用指定的函数将对象转换为字符串,再做进一步的格式设置。

    格式说明符:跟在冒号后面的表达式(这种表达式是使用微型格式指定语言表示的)。格式说明符让我们能够详细地指定最终的格式,包含格式类型(如字符串、浮点数或十六进制数),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。


3.3.1、替换字段名
    在最简单的情况下,只需向format提供要设置其格式的未命名参数,并在格式字符串中使用未命名字段。此时将顺序将字段与参数配对。你还可给参数指定名称,这种参数将被用于相应的替换字段中。可混合使用两种方法。
str9 = "{foo}{}{bar}{}".format(1,2,bar=4,foo=3)
print(str9)

在这里插入图片描述

    还可通过索引来指定要在哪个字段中使用相应的未命名参数,这样可不按顺序使用未命名参数。
str10 = "{foo}{1}{bar}{0}".format(1,2,bar=4,foo=3)
print(str10)

在这里插入图片描述

    不建议这么干,会变得很乱。并非只能使用提供的值本身,而是可以访问其组成部分。如下实例:
fullname = ["Alfred","Smoketoomuch"]
str11 = "Mr {name[1]}".format(name=fullname)
print(str11)

# 书中代码及结果
>>> import math
>>> tmpl = "The {mod.__name__} module defines the value {mod.pi} for π"
>>> tmpl.format(mod=math)
'The math module defines the value 3.141592653589793 for π'
#在Pycharm中无法识别,结果如下
The {mod.__name__} module defines the value {mod.pi} for π

#识别方式:
import math
tmpl = "The {mod.__name__} module defines the value {mod.pi} for π"
tmpl2=tmpl.format(mod=math)
print(tmpl2)

在这里插入图片描述

    如上所示:可使用索引,还可使用句点表示法来访问导入的模块中的方法、属性、变量和函数。name 代表模块名称。


3.3.2、基本转换
    指定要在字段中包含的值后,就可以添加设置格式的指令了。首先可以提供一个转换标志
str13 = "{pi!s} {pi!r} {pi!a}".format(pi="π")
print(str13)

在这里插入图片描述
这里附一篇解释str()和repr()区别的文章,供参考:
https://www.cnblogs.com/wswang/p/12199747.html

str14 = 'the number is {num}'.format(num=42)
print(str14)
str15 = 'the number is {num:f}'.format(num=42)
print(str15)
str16 = 'the number is {num:b}'.format(num=42)
print(str16)

在这里插入图片描述

    如上类型说明符有很多,详见下表

类型含义
b将整数作为二进制数
c将整数解读为uniocode码点
d将整数十进制数处理,这是整数默认的格式说明符
e使用科学表示法来表示小数(用e来表示指数)
E同e
f将小数表示为定点数
F同f,但对于特殊值(nan和inf)使用大写表示
g自动在定点表示法和科学表示法之间做出选择。这是默认的小数说明符,默认情况下至少1位小数
G同g,但使用大写表示指数和特殊值
n同g,但插入随区域而异的数字分隔符
o将整数表示为八进制数
s保持字符串格式不变,默认的字符串说明符
x将整数表示为十六进制数并使用小写字母
X同x,使用大写表示
%将数表示为百分比(乘以100,按说明符f设置格式,再在后面加上%)

博文内容来自本人所选的学习Python的工具书-《Python基础教程》(第三版)人民邮电出版社。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值