2.5 字符串

--- 字符串是不可变的。

 >>> str = "Hello world!"
>>> str[-6:-1] = "python"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>>

2.5.1 字符串格式设置

--- 使用字符串方法format,字段名({}部分)可以留空自动编号,或者使用索引手动编号,或者使用变量。(还可以通过:号后面添加格式说明符)

 >>> "H{}llo worl{}!".format('e', 'd')
'Hello world!'
>>> "H{0}llo worl{1}!".format('e', 'd')
'Hello world!'
>>> "H{1}llo worl{0}!".format('d', 'e')
'Hello world!'
>>> "H{a}llo worl{b}!".format(b = 'd', a = 'e')
'Hello world!'
>>> "H{a}llo worl{b:.3f}!".format(b = 1.2345, a = 'e')
'Hello worl1.234!'
>>>

--- 使用字符串方法format,字段名可以自动编号和变量一起使用,也可以手动编号和变量一起使用,但不能自动编号和手动编号一起使用。

 >>> "H{1}l{a}o wo{b}l{0}!".format('d', 'e', a = 'l', b = 'r')
'Hello world!'
>>> "H{}l{a}o wo{b}l{}!".format('e', 'd', a = 'l', b = 'r')
'Hello world!'
>>> "H{}l{2}o wo{3}l{}!".format('e', 'd', 'l', 'r')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: cannot switch from automatic field numbering to manual field specification
>>>

--- 使用字符串方法format,当变量名称与替换字段同名时,可使用f字符串(在字符串前面加 f )

 >>> from math import e
>>> "E = {e}".format(e = e)
'E = 2.718281828459045'
>>> from math import e
>>> f"E = {e}"
'E = 2.718281828459045'
>>>

2.5.2 基本转换

--- 转换标志:在感叹号❗后面的单字符,常见的有s、r、a分别使用str、repr、ASCII进行转换。

 >>> "{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'
>>>

2.5.3 宽度、精度和千位分隔符

 >>> "The number is {num:10}".format(num = 42)
'The number is 42'
>>> "The number is {num:10}".format(num = "Hello")
'The number is Hello '
>>> "The number is {num:10.5f}".format(num = 3.1415926)
'The number is 3.14159'
>>> "The number is {num:,}".format(num = 3.14**15)
'The number is 28,440,990.75034137'
>>>

2.6 字符串方法

2.6.1 位置对齐

--- 方法center,通过在两边填充字符(默认为空格),让字符串居中。(第一个参数指新字符串的长度,第二参数为填充字符)

 >>> "Hello world!".center(30)
' Hello world! '
>>> "Hello world!".center(30,"*")
'*********Hello world!*********'
>>>

--- 方法rjust,通过在左边填充字符(默认为空格),让字符串居右

 >>> "Hello world!".rjust(30)
' Hello world!'
>>> "Hello world!".rjust(30,"*")
'******************Hello world!'
>>>

--- 方法ljust,通过在右边填充字符(默认为空格),让字符串居左

 >>> "Hello world!".ljust(30)
'Hello world! '
>>> "Hello world!".ljust(30,"*")
'Hello world!******************'
>>>

2.6.2 查找和替换

--- 方法find,在字符串中查找子串,如果找到,则返回第一个找到位置的索引,如果没找到则返回 -1 。

&、 可以指定搜索的起点和终点,终点如果省略,则指搜索到末尾。起点值和终点值遵循左闭右开原则。

&、注意跟成员资格in和not in 的区别,成员资格返回的是布尔值,方法find返回的是索引值或 -1 。

 >>> "Hello world!".find("o")
4
>>> "Hello world!".find("lo")
3
>>> "Hello world!".find("ol")
-1
>>> "Hello world!".find("lo", 1, 10)
3
>>> "Hello world!".find("!", 1, )
11
>>> "lo" in "Hello world!"
True
>>> "ol" in "Hello world!"
False
>>>

--- 方法replace,将指定子串替换为另一个字符串,并返回替换后的结果。

&、如果没有找到指定的子串,则返回原字符串。

&、用于替换的字符串可以和指定的子串不等长。

 >>> "Hello world!".replace("lo", "@@")
'Hel@@ world!'
>>> "Hello world!".replace("ol", "@@")
'Hello world!'
>>> "Hello world!".replace("world", "python")
'Hello python!'
>>>

--- 方法translate,和方法replace一样替换字符串的指定部分,不同的是它只能进行单字符替换。

&、使用方法translate前,必须对字符串类型str调用方法maketrans创建一个转换表

&、方法maketrans通常接受两个参数,两个长度相等的字符串,指定将第一个字符串中的每个字符对应替换为第二个字符串的字符。

&、方法maketrans还可以指定第三个参数,指定将要删除的字符串。

 >>> tab = str.maketrans("l", "@")
>>> "Hello world!".translate(tab)
'He@@o wor@d!'
>>> tab = str.maketrans("lo", "@^")
>>> "Hello world!".translate(tab)
'He@@^ w^r@d!'
>>> tab = str.maketrans("l", "@", " ")
>>> "Hello world!".translate(tab)
'He@@owor@d!'
>>> tab = str.maketrans("l", "@", "od")
>>> "Hello world!".translate(tab)
'He@@ wr@!'
>>>

2.6.3 大小写

--- 方法lower,返回全小写的新字符串。

 >>> "Hello world!".lower()
'hello world!'
>>> "hello world!".lower()
'hello world!'
>>>

--- 方法upper,返回全大写的新字符串。

 >>> "Hello world!".upper()
'HELLO WORLD!'
>>>

2.6.4 连接和拆分

--- 方法join,通过指定的字符串连接合并序列中的元素,序列中的元素必须都是字符串。

&、注意和别的字符串方法调用方式的区别,对指定字符串调用方法join,并且传入一个序列值。

 >>> "-".join("Hello world!")
'H-e-l-l-o- -w-o-r-l-d-!'
>>> "-".join(['', '', ''])
'1-2-3'
>>> "-".join([1, 2, 3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>>

--- 方法split,作用与方法join相反,将字符串拆分为序列。

&、如果没有指定分隔符,将默认在单个或多个连续的空白字符处进行拆分。

 >>> "Hello world!".split("l")
['He', '', 'o wor', 'd!']
>>> "1+2+3".split("+")
['', '', '']
>>> "Hello my python!".split()
['Hello', 'my', 'python!']
>>>

2.6.5 空格删除

--- 方法strip,将字符串开头和末尾的空白格删除(不删除中间的空白格),并返回删除后的结果。

&、方法strip,可选带一个参数,表示字符串开头和末尾包含该参数指定的字符都删除,直到不是为止。(参数中各个字符顺序不重要,效果一样。)

 >>> "  Hello world!    ".strip()
'Hello world!'
>>> " Hello world!".strip()
'Hello world!'
>>> "Hello world! ".strip()
'Hello world!'
>>> "Hello world!".strip("eH!l")
'o world'
>>> "Hello world!".strip("leH!")
'o world'
>>>

--- 方法lstrip,删除左边空白字符,也可选带入一个参数。

 >>> "     Hello world!  ".lstrip()
'Hello world! '
>>> " Hello world! ".lstrip("Hle ")
'o world! '
>>>

--- 方法rstrip,删除右边空白字符,也可选带入一个参数。

 >>> "     Hello world!  ".rstrip()
' Hello world!'
>>> " Hello world! ".rstrip(" l!d")
' Hello wor'
>>>

2.6.6 判断类方法(常用于登录认证)

--- 方法islower,判断原字符串至少有一个字母,如果所有字母都是小写,返回布尔值True,否则返回布尔值Flase 。

 >>> "hello world!".islower()
True
>>> "Hello world!".islower()
False
>>>

--- 方法isupper,判断原字符串至少有一个字母,如果所有字母都是大写,返回布尔值True,否则返回布尔值Flase 。

 >>> "HELLO WORLD!".isupper()
True
>>> "Hello world!".isupper()
False
>>>

&、注意原字符串必须至少有一个字母。

 >>> "!@#$%^&*!".isupper()
False
>>> "!@#$%^&*!".islower()
False
>>>

--- 方法isalpha,判断原字符串如果只包含字母,并且非空,则返回布尔值True 。

--- 方法isdecimal,判断原字符串如果只包含数字,并且非空,则返回布尔值True 。

--- 方法isalnum,判断原字符串如果只包含字母和数字,并且非空,则返回布尔值True 。

--- 方法isspace,判断原字符串如果只包含空格、制表符和换行,并且非空,则返回布尔值True 。

--- 方法istitle,判断原字符串如果只包含以大写字母开头,且后面都是小写字母的单词,并且非空,则返回布尔值True 。

--- 方法startswith,判断原字符串如果以指定的字符串开始,原字符串可以为空,则返回布尔值True 。

--- 方法endswith,判断原字符串如果以指定的字符串结束,原字符串可以为空,则返回布尔值True 。

最新文章

  1. XP机器上WCF采用X509证书加密时IIS读取证书的授权
  2. WebService错误:使用 XSL 样式表无法查看 XML 输入
  3. 个人对JQuery Proxy()函数的理解
  4. loj 1337
  5. Luogu P1410 子序列
  6. DataPipeline丨新型企业数据融合平台的探索与实践
  7. 什么是Docker,它可干什么?
  8. NIO和经典IO
  9. Node_初步了解(3)回调,作用域,上下文
  10. Kubelet bootstrap 流程
  11. 使用 PLSQL 提示动态执行表不可访问,本会话的自动统计被禁止
  12. 高斯混合模型 GMM
  13. shell加密工具shc的安装和使用
  14. PMP备考指南之相关事项介绍
  15. CROC 2016 - Elimination Round (Rated Unofficial Edition) E - Intellectual Inquiry dp
  16. mysql exceeded the &#39;max_questions&#39; resource 记录
  17. 树形dp入门两题
  18. poj 2104 静态主席树
  19. 转!mysql 命令行下 通过DELIMITER临时改变语句分隔符 执行存储过程
  20. easyui 后台系统引入富文本编辑器的使用

热门文章

  1. cocos 场景制作流程
  2. 注解 springbootapplication 自动扫描所在包及其子包。会将有注解的加入到spring容器中
  3. 【MT】牛津的MT教程
  4. Stars project
  5. windows系统下升级nodejs
  6. Spring Cloud 微服务
  7. 3194. 【HNOI模拟题】化学(无标号无根树计数)
  8. elasticsearch-head的安装
  9. 分类器的评价指标-ROC&amp;AUC
  10. woe_iv原理和python代码建模