Logo

郎哥编程

文本序列类型

2020-12-17 246

文本序列类型用于处理字符串数据,文本序列对象也称为字符串,英文是str。字符串是由 Unicode 字符编码构成的不可变序列,字符串对象的每个元素是采用Unicode编码的字符。

str函数的使用

字符串对象除了使用赋值语句创建外,也可以使用Python的内置函数str来创建一个字符串对象,str函数有两个声明。

str函数声明1:

str(object='')

参数object是Python的根类,所有的类都继承于object类(关于类的继承,在后面的课程会讲到),序列类型、数字类型等都继承了object类。object类提供了一个方法__str__(),该方法会返回object对象的字符串描述,如果object是字符串对象,该方法返回字符串本身。str函数调用传入object对象的__str__(),来返回object对象的字符串描述。

str函数声明2:

str(object=b'', encoding='utf-8', errors='strict')

如果参数encoding 或 errors 均未给出,函数返回返回object对象的字符串描述。

如果 encoding 或 errors 至少给出其中之一,则 object 应该是一个bytes 或 bytearray对象(bytes或bytearray对象是二进制序列对象,后面的课程会讲述)。

str函数案例代码:

>>> # 使用列表创建一个字符串对象
>>> s = str([10,20,30,19])
>>> print(s)
[10, 20, 30, 19]
>>> type(s)
<class 'str'>
>>> # 使用元组创建一个字符串对象
>>> t = ("python","java")
>>> s = str(t)
>>> print(s)
('python', 'java')
>>> type(s)
<class 'str'>
>>>

字符串的方法

字符串是不可变序列类型,字符串支持序列类型所有的通用运算。此外字符串也定义了一些自身提供的方法。下表列出了字符串常用的方法,没有列出的方法,可以参见Python官方文档。

另外,涉及到修改字符串对象元素的方法,都会在原字符串对象的副本上进行,修改的内容不影响原字符串对象。

表中s是字符串对象。

16.PNG

17.PNG

注释

(1)isdigit()是字符串类型的方法,该方法判断s中的所有字符是否是数字字符,如果所有字符是数字字符,并且s至少有一个字符,该方法返回True,否则返回False。

案例代码:

>>> s = "890"
>>> print(s.isdigit())
True
>>> s = "89元"
>>> print(s.isdigit())
False
>>>

(2)find(sub[, start[, end]])是字符串类型的方法,该方法判断子串sub是否在s切片s[start:end]内,并返回在切片内的最小索引号。如果可选参数start和end省略,该方法会查找整个字符串s。如果子串sub不在s内,返回-1。

案例代码:

>>> s = " Time and tide wait for no man"
>>> print(s.find("wait"))
15
>>> print(s.find("and",10,20))
-1
>>> print(s.find("and"))
6
>>>

(3)count(sub[, start[, end]])是字符串类型的方法,该方法返回子串sub在s切片s[start:end]内重复出现的次数。如果可选参数start和end省略,该方法会查找整个字符串s。如果子串sub不在s内,返回-1。

案例代码:

>>> s = "123aabccdaaeff"
>>> print(s.count("aa"))
2
>>> print(s.count("a"))
4
>>> print(s.count("a",0,10))
3
>>>

(4)format(*args, **kwargs)是字符串类型的方法,该方法对字符串对象s进行格式化处理,返回一个新的字符串对象。调用此方法的字符串可以包含字符串值或者以花括号 {} 括起来的替换域。 每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。

案例代码:

>>> s = "半径为{0}圆的面积为:{1}"
>>> print(s.format(5,78.5))
半径为5圆的面积为:78.5
>>>

案例代码的字符串对象s包含两个花括号,花括号为替换域,该方法执行后,花括号会被方法传入的参数替换,花括号内的数字是方法位置参数的数字索引,数字0对应方法的第一个参数,数字1对应方法的第二个参数。

(5)index(sub[, start[, end]])是字符串类型的方法,该方法的功能和find方法的功能相同。当sub子串不在s内,find方法会返回-1,index方法抛出ValueError异常。

案例代码:

>>> s = " Time and tide wait for no man"
>>> print(s.find("wait"))
15
>>> print(s.find("good"))
-1
>>> print(s.index("wait"))
15
>>> print(s.index("good"))
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
    print(s.index("good"))
ValueError: substring not found
>>>

(6)lower()方法是字符串类型的方法,该方法将s内的所有字符转换为小写,并返回一个新的字符串对象。

案例代码:

>>> s = "Hello Python"
>>> print(s.lower())
hello python

(7)lstrip([chars])方法是字符串类型的方法,该方法移除s的前导字符chars,如果参数为空,移除空格。该方法会返回一个新的字符串对象。

案例代码:

>>> s = "***Hello Python"
>>> print(s.lstrip("*"))
Hello Python

(8)replace(old, new[, count])方法是字符串类型的方法,该方法将s中所有出现的子串old替换为字符串new,如果给出了可选参数count,则只替换前 count 次出现的old子串。该方法返回一个新的字符串对象。

案例代码:

>>> s = "Time and tide wait for no man"
>>> # s内的空格替换为*
>>> print(s.replace(" ","*"))
Time*and*tide*wait*for*no*man

(9)split(sep=None, maxsplit=-1)方法是字符串类型的方法,该方法将s分隔为多个子串,分隔后的多个子串以列表数据返回。

参数sep是分隔字符串,该字符串可以是单个字符,也可以是多个字符,在s中,如果分隔字符串是连续的,连续的分隔字符串会被分隔为空字符串。如果给出了maxsplit,则最多进行 maxsplit 次拆分。

案例代码:

>>> s = "Python,Java,C++"
>>> # 使用英文逗号分隔字符串s
>>> print(s.split(","))
['Python', 'Java', 'C++']
>>> s = "Python,,Java,C++"
>>># s中有连续的分隔字符串
>>># 连续的分隔字符串被分隔为空字符串
>>> print(s.split(","))
['Python', '', 'Java', 'C++']
>>>

(10)strip([chars])方法是字符串类型的方法,该方法移除s的前导和末尾字符chars,如果参数为空,移除空格。该方法会返回一个新的字符串对象。

案例代码:

>>> s = "***Python***"
>>> print(s.strip("*"))
Python
>>>

(11)upper()方法是字符串类型的方法,该方法将s的所有字符转换为大写。该方法会返回一个新的字符串对象。

案例代码:

>>> s = "Python,Java"
>>> print(s.upper())
PYTHON,JAVA
>>>

(12)join(iterable)方法是字符串类型的方法,该方法将s作为拼接字符串,拼接iterable对象的元素,返回一个新的字符串对象。如果 iterable 中存在任何非字符串值,该方法会抛出TypeError异常。

案例代码:

>>> s = ["Python","Java","C++"]
>>> t = ["Python","Java","C++"]
>>> s = "_"
>>> print(s.join(t))
Python_Java_C++
>>>

(13)encode(encoding="utf-8", errors="strict")方法将字符串进行编码,默认编码方式是utf-8,并返回bytes对象。参数encoding是编码方式,默认编码是utf-8,参数errors给出处理错误的方式,默认是strict,表示编码错误会引发 UnicodeError异常。

案例代码:

>>> s = "Learn Python Programming"
>>> encode = s.encode()
>>> print(encode)
b'Learn Python Programming'
>>> print(type(encode))
<class 'bytes'>

print函数使用format

字符串对象的format()方法可以对字符串进行格式化,在print函数内也可以使用format()方法,对输出的字符串进行格式化。使用方法如下:

print(f”格式化字符串”)

在格式化字符串前面加前缀字符f,字符f不在格式化化字符串引号内,字符串的格式化方法同format()方法完全相同。

案例代码:

>>> r = 2.0
>>> area = r * r * 3.14
>>> print(f"半径为{r}圆的面积为:{area}")
半径为2.0圆的面积为:12.56
>>> 

上机操作

1、利用下划线将列表t的每一个元素拼接成字符串。

t = ["a","b","c","d","e","f"]

2、创建一个字符串对象,字符串对象的值为“TypeError: sequence item 0: expected str instance, int found”,完成如下操作:

(1)   查找子串“item”;

(2)   查找子串“te”出现的次数;

(3)   使用”:”分隔字符串;

(4)   使用“*”替换字符串的空格;

(5)   使用“|”拼接字符串;

(6)   字符串重新赋值为“{0}: sequence {1} 0: expected str {2}, int found”,请使用format方法将字符串格式化为原来的内容。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论