Python str字符串精讲
所以字符串最基本的属性就是长度,就是包含字符的个数。和其他语言类似,在 Python 中,长度为 0 的字符串也是合法的,也被称作空字符串。但和C语言、Java 语言不同的是,Python 中没有字符这个类型,或者我们可以认为字符就是长度为 1 的字符串。
在 Python 2 中,有两类字符串:
- 一类是 str 类型的字符,可以看作字节流,一般用来表示使用 ASCII 码字符就能表示的字符串,这类字符串不能直接用来表示中文字符;
- 另外一类是 unicode 类型的字符串,这类字符串可以用来表示中文。
而在 Python 3 中,只有 str 一种类型,但该类型就是 Python 2 中的 unicode 类型,我们可以用其表示任意字符。原来 Python 2 中的 str 类型在 Python 3 中用 bytes 类型表示。
本节主要讲述 Python 3 中字符串的用法。
字符串可以使用下面 4 种方式来表示:
- 使用单引号加上一串字符。
- 使用双引号加上一串字符。
- 使用 3 个单引号开始,使用 3 个单引号来结束,中间放上一串字符。
- 使用 3 个双引号开始,使用 3 个双引号来结束,中间放上一串字符。
下面是各种字符串表示法的例子:
>>> a = '' # 使用单引号,空字符串 >>> a = 'abc' # 使用单引号,包含3个字符,a、b和c >>> a = "" # 使用双引号,空字符串 >>> a = "abc" # 使用双引号,包含3个字符,a、b和c >>> a = """""" # 使用3个双引号,空字符串 >>> a = """abc""" # 使用3个双引号,包含3个字符,a、b和c >>> a = """abc # 使用3个双引号,包含换行符 def # 第二行 ekl""" # 第三行 >>> a # 查看内容 'abcndefnekl' >>> a = '''abc # 使用3个单引号,包含换行符 def # 第二行 ijl''' # 第三行 >>> a # 查看内容,可以看到换行符n 'abcndefnijl'
str 类型的相关接口函数
字符串的基本操作包括得到子字符串、得到字符串的长度等。本节将介绍字符串类型的常用接口函数以及它们的用法。
1) 得到字符串长度——len()
其返回字符串中字符的个数。
>>> len("") # 空字符串,长度为0 0 >>> len("a") # 单个字符,所以长度为1 1 >>> len("ab") # 包含两个字符,所以长度为2 2 >>> len("abc") # 包含3个字符,所以长度为3 3 >>> a = "我爱python" >>> len(a) # 包括8个字符 8
2) 得到子字符串——[开始位置:结束位置]
需要注意的是,字符串是不可以修改的,所以对子字符串是只能读不能写。
>>> in_str="abcdefghijklmn" >>> in_str[2:] # 从第三个开始一直到最后 'cdefghijklmn' >>> in_str[2] # 仅第三个字符 'c' >>> in_str[2:5] # 第3个到第5个字符 'cde' >>> in_str[2:5]="1234" # 试图做写操作,失败,抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
3) 是否为26个字母——isalpha()
如果字符串包含多个字符,那么是否所有的字符都是26个字母,包括大小写的字母。
>>> "".isalpha() # 空字符串不是26个字母 False >>> "a".isalpha() # "a"包含的都是26个字母 True >>> "a1".isalpha() False >>> "aB".isalpha() True
4) 是否全部为 10 个数字字符——isdigit()
该函数用于判断是否所有的字符都是 0 到 9 的字符,如果有一个不是,返回 False,否则返回 True。
>>> "".isdigit() # 空字符返回False False >>> "0".isdigit() # 单个字符0,返回True True >>> "0a".isdigit() # 包含非数字字符a,返回False False >>> "009876".isdigit() # 全部为数字字符,返回True True
5) 是否为26个字母或者10个数字字符——isalnum()
如果字符串中的每个字符都是 26 个字母或者 10 个数字字符,返回 True;如果有一个不是这个范围内的字符,返回 False。
>>> "009876".isalnum() # 都符合要求 True >>> "a009876".isalnum() # 都符合要求 True >>> "".isalnum() # 空字符串,返回False False >>> "abc_def".isalnum() # _字符不符合要求,所以返回False False
6) 转换成小写字母——lower()
该函数将所有的大写字母都转换成小写字母,其他字符原封不动。
>>> "abCD987".lower() # CD => cd, 其他没有变化 'abcd987'
7) 转换成大写字母——upper()
该函数将所有的小写字母都转换成大写字母,其他字符原封不动。
>>> "abCD987".upper() # ab => AB 'ABCD987' >>> "我爱python".upper() '我爱PYTHON'
8) 将单词的首字母大写——title()
如果有多个单词,那么每个单词的首字母都变成大写的。
>>> "abc".title() # 仅仅包含一个单词 'Abc' >>> "this is our favorite book".title() # 包含多个单词,每个的首字母都大写 'This Is Our Favorite Book'
9) 分割成字符串列表——split(分割字符)
分割字符可以是单个字符,也可以是一个字符串。下面的例子中既有单个字符组成的分割字符,也有多个字符组成的分割字符。
>>> "a:b:c".split(":") # 分割字符是单个字符 ['a', 'b', 'c'] >>> "abc--def".split('--') # 分割字符是两个字符 ['abc', 'def'] >>> "abc:def:".split(':') # 尾部有分割字符 ['abc', 'def', ''] >>> "::::abc:def::::".split(':') # 头部有分割字符,有连续的分割字符 ['', '', '', '', 'abc', 'def', '', '', '', '']
10) 将字符串列表拼接成一个字符串——join(字符串列表)
该接口函数接收一个字符串列表或者元组,返回一个新的字符串,输入的字符串集合不会发生变化。返回的字符串就是用指定的字符连接起来的。
下面的例子使用“:”来连接输入的字符串列表。
>>> ":".join(['a', 'b', 'c']) 'a:b:c'
11) 得到字符的ASCII码——ord(单个字符)
要求输入是包含单个字符的字符串。
ASCII 码是早期的一种编码方式,使用 8 位来表示一个字符。目前这种编码方式依然广泛使用,但这种表示方法无法表示中文。
>>> ord("a") # 字符a的ASCII码是97 97 >>> ord("x") # 字符x的ASCII码是120 120 >>> ord("?") 63 >>> ord("ab") # 两个字符,抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ord() expected a character, but string of length 2 found
12) 从 ASCII 码得到字符——chr(ASCII码值)
输入参数必须在 0 到 255 之间,超出范围会抛出异常。
>>> chr(0) # ASCII码中0表示的字符 'x00' >>> chr(255) 'xff' >>> chr(36) '$' >>> chr(2236) # 超出范围,导致抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: chr() arg not in range(256)
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试