ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Lesson 2-3(字符串)

2019-02-16 11:50:07  阅读:212  来源: 互联网

标签:format num 字符串 world Lesson 方法 Hello


2.5 字符串

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

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

2.5.1 字符串格式设置

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

 1 >>> "H{}llo worl{}!".format('e', 'd')
 2 'Hello world!'
 3 >>> "H{0}llo worl{1}!".format('e', 'd')
 4 'Hello world!'
 5 >>> "H{1}llo worl{0}!".format('d', 'e')
 6 'Hello world!'
 7 >>> "H{a}llo worl{b}!".format(b = 'd', a = 'e')
 8 'Hello world!'
 9 >>> "H{a}llo worl{b:.3f}!".format(b = 1.2345, a = 'e')
10 'Hello worl1.234!'
11 >>> 

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

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

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

1 >>> from math import e
2 >>> "E = {e}".format(e = e)
3 'E = 2.718281828459045'
4 >>> from math import e
5 >>> f"E = {e}"
6 'E = 2.718281828459045'
7 >>> 

 2.5.2 基本转换

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

1 >>> "{pi!s},{pi!r},{pi!a}".format(pi = 'π')
2 "π,'π','\\u03c0'"
3 >>> 

--- 还可以指定要转换的值是哪种类型。

1 >>> "The number is {num}".format(num = 42)
2 'The number is 42'
3 >>> "The number is {num:f}".format(num = 42)
4 'The number is 42.000000'
5 >>> "The number is {num:b}".format(num = 42)
6 'The number is 101010'
7 >>> 

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

1 >>> "The number is {num:10}".format(num = 42)
2 'The number is         42'
3 >>> "The number is {num:10}".format(num = "Hello")
4 'The number is Hello     '
5 >>> "The number is {num:10.5f}".format(num = 3.1415926)
6 'The number is    3.14159'
7 >>> "The number is {num:,}".format(num = 3.14**15)
8 'The number is 28,440,990.75034137'
9 >>> 

 

2.6 字符串方法

2.6.1 位置对齐

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

1 >>> "Hello world!".center(30)
2 '         Hello world!         '
3 >>> "Hello world!".center(30,"*")
4 '*********Hello world!*********'
5 >>> 

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

1 >>> "Hello world!".rjust(30)
2 '                  Hello world!'
3 >>> "Hello world!".rjust(30,"*")
4 '******************Hello world!'
5 >>> 

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

1 >>> "Hello world!".ljust(30)
2 'Hello world!                  '
3 >>> "Hello world!".ljust(30,"*")
4 'Hello world!******************'
5 >>> 

 

2.6.2 查找和替换

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

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

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

 1 >>> "Hello world!".find("o")
 2 4
 3 >>> "Hello world!".find("lo")
 4 3
 5 >>> "Hello world!".find("ol")
 6 -1
 7 >>> "Hello world!".find("lo", 1, 10)
 8 3
 9 >>> "Hello world!".find("!", 1, )
10 11
11 >>> "lo" in "Hello world!"
12 True
13 >>> "ol" in "Hello world!"
14 False
15 >>> 

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

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

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

1 >>> "Hello world!".replace("lo", "@@")
2 'Hel@@ world!'
3 >>> "Hello world!".replace("ol", "@@")
4 'Hello world!'
5 >>> "Hello world!".replace("world", "python")
6 'Hello python!'
7 >>> 

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

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

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

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

 1 >>> tab = str.maketrans("l", "@")
 2 >>> "Hello world!".translate(tab)
 3 'He@@o wor@d!'
 4 >>> tab = str.maketrans("lo", "@^")
 5 >>> "Hello world!".translate(tab)
 6 'He@@^ w^r@d!'
 7 >>> tab = str.maketrans("l", "@", " ")
 8 >>> "Hello world!".translate(tab)
 9 'He@@owor@d!'
10 >>> tab = str.maketrans("l", "@", "od")
11 >>> "Hello world!".translate(tab)
12 'He@@ wr@!'
13 >>> 

 

2.6.3 大小写

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

1 >>> "Hello world!".lower()
2 'hello world!'
3 >>> "hello world!".lower()
4 'hello world!'
5 >>> 

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

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

 

2.6.4 连接和拆分

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

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

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

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

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

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

 

2.6.5 空格删除

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

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

 1 >>> "  Hello world!    ".strip()
 2 'Hello world!'
 3 >>> "  Hello world!".strip()
 4 'Hello world!'
 5 >>> "Hello world!    ".strip()
 6 'Hello world!'
 7 >>> "Hello world!".strip("eH!l")
 8 'o world'
 9 >>> "Hello world!".strip("leH!")
10 'o world'
11 >>> 

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

1 >>> "     Hello world!  ".lstrip()
2 'Hello world!  '
3 >>> "     Hello world!  ".lstrip("Hle ")
4 'o world!  '
5 >>> 

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

1 >>> "     Hello world!  ".rstrip()
2 '     Hello world!'
3 >>> "     Hello world!  ".rstrip(" l!d")
4 '     Hello wor'
5 >>> 

 

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

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

1 >>> "hello world!".islower()
2 True
3 >>> "Hello world!".islower()
4 False
5 >>> 

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

1 >>> "HELLO WORLD!".isupper()
2 True
3 >>> "Hello world!".isupper()
4 False
5 >>> 

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

1 >>> "!@#$%^&*!".isupper()
2 False
3 >>> "!@#$%^&*!".islower()
4 False
5 >>> 

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

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

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

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

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

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

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

 

标签:format,num,字符串,world,Lesson,方法,Hello
来源: https://www.cnblogs.com/jlufcs/p/10360791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有