Python入门笔记3 - 字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门笔记3 - 字符串相关的知识,希望对你有一定的参考价值。


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

文章目录

  • ​​一、字符串基本操作​​
  • ​​二、设置字符串格式​​
  • ​​1. 旧方法:使用%​​
  • ​​2. 旧方法:模板字符串​​
  • ​​3. 新方法:format​​
  • ​​(1)基本操作​​
  • ​​(2)替换字段名​​
  • ​​(3)基本转换​​
  • ​​(4)宽度、精度和填充​​
  • ​​三、字符串方法​​

一、字符串基本操作

  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\\n0:^10.2f\\n0:>10.2f.format(pi)) 
3.14
3.14
3.14
  1. 指定填充字符
>>> print(0:*<10.2f\\n0:#^10.2f\\n0:$>10.2f.format(pi)) 
3.14******
###3.14###
$$$$$$3.14
  1. 符号说明符
>>> print(0:*<-.2f\\n1:-.2f.format(pi,-pi))  //默认形式            
3.14
-3.14
>>> print(0:*<+.2f\\n1:+.2f.format(pi,-pi))
+3.14
-3.14
>>> print(0:*< .2f\\n1: .2f.format(pi,-pi))
3.14
-3.14

三、字符串方法

  • 字符串方法实在太多,请参考:


以上是关于Python入门笔记3 - 字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python 基础入门笔记———— 公共操作推导式函数lambda表达式高阶函数

Python 基础入门笔记———— 公共操作推导式函数lambda表达式高阶函数

Python 基础入门笔记———— 公共操作推导式函数lambda表达式高阶函数

Python 基础入门笔记———— 字符串列表元组集合字典

保姆级入门系列阿ken的 Python学习笔记数字类型和字符串

java入门学习笔记之2(Java中的字符串操作)