3-使用字符串.md

设置字符串的格式: 精简版

Python提供了多种字符串格式设置方法。

以前,主要的解决方案是使用字符串格式设置运算符——百分号:

>>> format = "Hello, %s. %s enough for ya?"
>>> values = ('world', 'Hot')
>>> format % values
'Hello, world. Hot enough for ya?'

%s 称为转换说明符,指出了要将值插入什么地方。 s 意味着将值视为字
符串进行格式设置。

模板字符串。它使用类似于UNIX shell的语法,旨在简化基本的格式
设置机制,如下所示:

>>> from string import Template
>>> tmpl = Template("Hello, $who! $what enough for ya?")
>>> tmpl.substitute(who="Mars", what="Dusty")
'Hello, Mars! Dusty enough for ya?'

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

>>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to")
'to be or not to be'
>>> from math import pi
>>> "{name} is approximately {value:.2f}.".format(value=pi, name="π")
'π is approximately 3.14.'

在Python 3.6中,如果变量与替换字段同名,还可使用一种简写。在这种情况下,可
使用 f 字符串``——在字符串前面加上f`

>>> from math import e
>>> f"Euler's constant is roughly {e}."
"Euler's constant is roughly 2.718281828459045."

设置字符串的格式: 完整版

这里的基本思想是对字符串调用方法 format ,并提供要设置其格式的值。字符串包含有关如何设置格式的信息,而这些信息是使用一种微型格式指定语言(mini-language)指定的。每个值都被插入字符串中,以替换用花括号括起的替换字段。要最终结果中包含花括号,可在格式字符串中使用两个花括号(即 {{ 或 }} )来指定。

  • 替换字段名
>>> "{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)
'3 2 4 1'

不能同时使用手工编号和自动编号,因为这样很快会变得混乱不堪。
并非只能使用提供的值本身,而是可访问其组成部分:

>>> fullname = ["Alfred", "Smoketoomuch"]
>>> "Mr {name[1]}".format(name=fullname)
'Mr Smoketoomuch'
>>> 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 π'

基本转换

  • 转换标志: 跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)和a(表示ascii)。如果你指定了转换标志,将不使用对象本身的格式设置机制,而是使用指定的函数将对象转换为字符串,再做进一步的格式设置。
>>> print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
π 'π' '\u03c0'
  • 格式说明符: 跟在冒号后面的表达式(这种表达式是使用微型格式指定语言表示的)。格式说明符让我们能够详细地指定最终的格式,包括格式类型(如字符串、浮点数或十六进制数),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。
>>> "The number is {num}".format(num=42) 'The number is 42'
>>> "The number is {num:f}".format(num=42) 'The number is 42.000000'
>>> "The number is {num:b}".format(num=42) 'The number is 101010'

p44 表3-1 字符串格式设置中的类型说明符.
可使用逗号来指出你要添加千位分隔符,这个逗号应放在宽度和表示精度的句点之间.

>>> 'One googol is {:,}'.format(10**100) 
>'One googol is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,00 0,000,000,000,000,000,000,000,000,000,000,000,000,000,000'

符号,对齐和用0填充 p46

字符串方法

  • center 字符串居中
  • find 查找子串,返回索引或(-1)
  • join 合并序列元素
  • lower 字符串小写版本
  • title 首字母大写
  • replace 将指定子串都替换为另一个字符串,并返回替换后的结果。
  • split 将字符串拆分为序列。如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。
  • strip 将字符串开头和末尾的空白(但不包括中间的空白)删除,并返回删除后的结果.你还可在一个字符串参数中指定要删除哪些字符。

    与lower一样,需要将输入与存储的值进行比较时,strip很有用.

translate

方法translate与replace一样替换字符串的特定部分,但不同的是它只能进行单字符替换。这个方法的优势在于能够同时替换多个字符,因此效率比replace高。

使用translate前必须创建一个转换表。这个转换表指出了不同Unicode码点之间的转换关系。要创建转换表,可对字符串类型str调用方法maketrans,可选的第三个参数,指定要将哪些字母删除

>>> table = str.maketrans('cs', 'kz')
>>> 'this is an incredible test'.translate(table) 'thiz iz an inkredible tezt'

判断字符串是否满足特定的条件

  • isspace,isdigit,isupper 返回布尔值。

string.capwords(s[, sep]) 使用split根据sep拆分s,将每项的首字母大写,再以空格为分隔符将它们合并起来

ascii(obj) 创建指定对象的ASCII表示

猜你喜欢

转载自blog.csdn.net/qq_40570025/article/details/83183817