Python字符串、字典的使用方法介绍

#第三章:使用字符串

1:基本字符串操作:所有标准的序列操作(索引、分片、乘法、判断成员资格、求长度、取最小值和最大值)对字符串同样适用。但记住:字符串是不可变的

2:字符串格式化:精简版
使用字符串格式化操作符即百分号%来实现。注意:%也可以用作模运算(求余)操作符

>>> format = "Hello,%s. %s enough for ya?"
>>> values = ('World', 'Hot')
>>> print(format % values)
Hello,World. Hot enough for ya?
#等同:"Hello,%s. %s enough for ya?" % ('World','Hot')

注意:如果要使用列表或者其他序列代替元组,那么序列就会被解释为一个值。只有元组和字典可以格式化一个以上的值

格式化字符串的%s部分称为转换说明符(conversion specifier),它们标记了需要插入转换值的位置。s表示值会被格式化为字符串——如果不是字符串,则会用str将其转换为字符串。

注意:如果要在格式化字符串里包含百分号,那么必须使用%%,这样python就不会将百分号误认为是转换说明符了

如果要格式化实数(浮点数),可以使用f说明符类型,同时提供所需要的精度:一个句点加上希望保留的小数位数。因为格式化说明符总是以表示类型的字符结束,所以精度应该放在类型字符前面:

>>> format="Pi with three decimals: %.3f"
>>> from math import pi
>>> print(format % pi)
Pi with three decimals: 3.142

string模块提供另外一种格式化值的方法:模板字符串。它的工作方式类似于很多UNIX Shell里的变量替换。如下所示,substitute这个模板方法会用传递进来的关键字参数foo替换字符串中的$foo

>>> from string import Template
>>> s = Template('$x, glorious $x!')
>>> s.substitute(x='slurm')
'slurm, glorious slurm!'

如果替换字段是单词的一部分,那么参数名就必须用括号括起来,从而准确指明结尾:

>>> s = Template("It's ${x}tastic")
>>> s.substitute(x='slurm')
"It's slurmtastic"

可以使用$$插入美元符号:

>>> s=Template("Make $$ selling $x!")
>>> s.substitute(x='slurm')
'Make $ selling slurm!'

除了关键字参数外,还可以使用字典变量提供值/名称对

>>> s=Template('A $thing must never $action')
>>> d={}
>>> d['thing']='gentleman'
>>> d['action']='show his socks'
>>> s.substitute(d)
'A gentleman must never show his socks'

方法 safe_substitute 不会因为缺少值或者不正确使用$字符而出错

3:字符串格式化:完整版——格式化操作符的右操作数可以是任何东西,如果是元组或者映射类型(如字典),那么字符串格式化将会有所不同。

如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符。
说明:如果需要转换的元组作为转换表达式的一部分存在,那么必须将它用圆括号括起来,以避免出错

>>> '%s plus %s equals %s' % (1,1,2) #必须要有括号,否则出错
'1 plus 1 equals 2'

基本的转换说明符,注意,这些项的顺序是至关重要的:
(1) %字符:标记转换说明符的开始
(2) 转换标记(可选):-表示左对齐;+表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
(3) 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出
(4) 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出
(5) 转换类型:
基本的转换说明符,注意,这些项的顺序是至关重要的:
(1) %字符:标记转换说明符的开始
(2) 转换标记(可选):-表示左对齐;+表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充
(3) 最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出
(4) 点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出
(5) 转换类型:

(1) 简单转换

>>> 'Price of eggs: $%d' % 42 #十进制整数
'Price of eggs: $42'
>>> 'Hexadecimal price of eggs: %x' % 42  #十六进制
'Hexadecimal price of eggs: 2a'
>>> from math import pi
>>> 'Pi: %f...' % pi         #十进制浮点数
'Pi: 3.141593...'
>>> 'Very inexact estimate of pi: %i' % pi       #十进制整数
'Very inexact estimate of pi: 3'
>>> 'Using str: %s' % 42           #字符串(使用str转换任意pytho
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值