Python入门笔记3 - 字符串

  • 参考书《Python基础教程(第三版)》—— Magnus Lie Hetland

一、字符串基本操作

  1. 字符串属于序列适用于所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小最大值)
  2. 字符串是不可变的,因此所有的元素赋值和切片赋值非法
  3. 序列通用方法参考:Python入门笔记2 - 列表和元组
#字符串作为序列,支持序列的通用操作
>>> str = '0123456789'

#索引
>>> str[1]			
'1'
>>> str[-1]  
'9'

#切片
>>> str[8:3:-2]
'864'
>>> str[:]      
'0123456789'

#加法
>>> str2 = 'ABC'
>>> str + str2
'0123456789ABC'

#乘法
>>> 3*str
'012345678901234567890123456789'

#成员资格检查
>>> '' in str  
True
>>> 'A' in str 
False

二、设置字符串格式

1. 旧方法:使用%

  • 类似C语言printf
  • 格式字符串:类似printf中“”,这是一个带有转换说明符的字符串(%s,%.3f 之类的)
  • %左边是一个格式字符串,右边指定要设置其格式的值
  • 设置单个值格式,可以用字符串/数字;设置多个值格式,可以用元组/字典
>>> format = "hello, %s  %d %.3f, 12345"
>>> values = ('world',2012,3.14159)  
>>> format % values
'hello, world  2012 3.142, 12345'

>>> "%d %s" % (10,'ABC')     
'10 ABC'

2. 旧方法:模板字符串

  • 类似UNIX shell语法
>>> from string import Template 
>>> tmp1 = Template("Hello $name! The price is $number")
>>> tmp1.substitute(name = 'Jack',number = "3.14") 
'Hello Jack! The price is 3.14'
  • 上面包含等号的参数称为 “关键字参数” ,(这样可以确保实参传递给正确的形参,而不必在意两个实参的先后顺序),在字符串格式设置中,把这个视为向命名替换字段提供值的方式

3. 新方法:format

(1)基本操作

  • 每个替换字段用{}框起来,其中包含名称即如何对对应值进行转换和格式设置的信息
>>> "{},{},{}".format('first','second','third') 
'first,second,third'

>>> "{2},{1},{0}".format('first','second','third') 
'third,second,first'

>>> from math import pi
>>> "{name} is approximately {value:.2f}.".format(name="PI",value=pi) 
'PI is approximately 3.14.'

(2)替换字段名

  • 可以在{}给出替换参数的索引,从而可以不按顺序使用未命名参数
>>> "{3},{2},{1},{0}".format('A','B','C','D')
'D,C,B,A'
  • 可以给未命名参数指定名称,这种参数将被应用到相应的替换字段中(指定名称必须从后面开始)
>>> "{foo},{},{},{}".format('A','B','C',foo = 'D') 
'D,A,B,C'

>>> "{foo},{},{},{}".format('A','B',foo = 'C','D') 
#报错,指定名称必须从最后开始
  • 上面两种方法可以混用,但是最好不要这样用,这容易造成混乱

(3)基本转换

  • 指定要在字段中替换的值后,就可以添加有关如何设置其格式的指令了。可以提供转换标志

  • 在字段{}

    1. A!s表示用str()转换参数A
    2. A!r表示用repr()转换参数A
    3. A!a表示用ascii()转换参数A
>>> print("{A!s},{A!r},{A!a}".format(A='+'))      
+,'+','+'
  • 还可以指定要转换的值是哪种类型,更准确的说,是要将其视为哪种类型。(例如:可以提供一个整数,把它作为小数处理)。
  • 在字段{}
    1. num:b:将num表示为二进制数
    2. num:c:将num表示为Unicode码点
    3. num:d:将num表示为十进制整数(num为整数时缺省)
    4. num:e:将num表示为科学技术法表示
    5. num:E: 同num:e,大写表示
    6. num:f:将小数num表示为定点数
    7. num:F: 同num:F,大写表示
    8. num:g:自动在定点小数和科学表示法之间做选择(num为浮点数时缺省)
    9. num:G:同num:g,大写表示
    10. num:n:同num:g,插入数字分隔符
    11. num:o:将num表示为八进制数
    12. num:s:将num表示为字符串
    13. num:x:将num表示为十六进制数
    14. num:X:同num:x,大写表示
    15. num:%:将num表示为百分比值,带%号
>>> "{num:f} , {num:o} , {num:b}".format(num = 100) 
'100.000000 , 144 , 1100100'

(4)宽度、精度和填充

  1. 设置宽度(下例可见数字默认右对齐,字符串默认左对齐)
>>> '{:10}'.format(3.14) 
'      3.14'
>>> '{:10}'.format("BOB") 
'BOB       '
  1. 设置精度
>>> "{:.2f}".format(3.14159)
'3.14'
  1. 用0填充数字
>>> '{:010}'.format(3.14)  
'0000003.14'
  1. 指定对齐方式
>>> print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(pi)) 
3.14      
   3.14
      3.14
  1. 指定填充字符
>>> print('{0:*<10.2f}\n{0:#^10.2f}\n{0:$>10.2f}'.format(pi)) 
3.14******
###3.14###
$$$$$$3.14
  1. 符号说明符
>>> print('{0:*<-.2f}\n{1:-.2f}'.format(pi,-pi)) 	//默认形式            
3.14
-3.14
>>> print('{0:*<+.2f}\n{1:+.2f}'.format(pi,-pi)) 
+3.14
-3.14
>>> print('{0:*< .2f}\n{1: .2f}'.format(pi,-pi)) 
 3.14
-3.14

三、字符串方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端FFF

所有博文免费阅读,求打赏鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值