![机器学习入门:Python语言实现](https://wfqqreader-1252317822.image.myqcloud.com/cover/84/41787084/b_41787084.jpg)
1.3 Python中的简单数据类型
Python支持原始数据类型,例如数字(整数、浮点数和指数)、字符串和日期等。Python还支持更复杂的数据类型,例如列表(或数组)、元组和字典,所有这些都将在第3章中讨论。接下来的几节将讨论一些Python基本数据类型,并通过相关的代码示例说明如何对这些数据类型执行不同的操作。
1.3.1 数字
与其他编程语言类似,Python提供了简洁明了的算术操作。以下是关于整数算术操作的例子:
![018-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/018-02.jpg?sign=1738898961-YnDBaivGl201fK8uCLpcPfsPgfZQ7Kiw-0-c6bbdf9d571c07111e5d6c062cda3e58)
下面的例子将数字分配给两个变量并计算其乘积:
![018-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/018-03.jpg?sign=1738898961-FhMcZpX5mNUu739BCFfUq0PkEShwPsSe-0-7c1ebdea122808ea75d1e351ee99c21c)
下面的例子是关于整数的算术操作:
![018-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/018-04.jpg?sign=1738898961-RlxHK75RjC4VRVEu3xsIypADWGEvkUpd-0-af47e5691f588436834c2f5073b33765)
注意,两个整数的除法(“/”)实际上是“截断”,即仅保留整数结果。下面的例子将浮点数转换为指数形式:
![019-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-01.jpg?sign=1738898961-LIFr12pKqL2oZSMkqNs9Lu0nizsNSqlM-0-02e0c25626dd2c96f293940f4b74aaf3)
int()
函数和float()
函数可将字符串转换为数字:
![019-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-02.jpg?sign=1738898961-PB5paewbMUkgXT5dqVeNnKvZbQ4HfG12-0-2a2b81c39726ceb0566c61aca03b7a1b)
其输出如下:
![019-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-03.jpg?sign=1738898961-49WbFwVRiP8FBYmYhpvhRQiWMfb6HLJP-0-c574dba06be412d0f1fee0cb12bd7d62)
另外,还可以使用eval()
函数:
![019-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-04.jpg?sign=1738898961-TMvOkT0Ma3Ibh4k9dpWUwMbHJB3tlB1d-0-416f21b3de5136a025b6b0a3589be83a)
如果要转换非有效整数或浮点数的字符串,Python会引发异常,因此建议将代码放在try/except
块中(本章稍后讨论)。
1. 使用其他底数
Python中的数字以10为底数(默认),但你也可以将数字转换为其他底数。例如,下面的代码块将变量x
的初始值设为1234,然后分别以2、8和16为底数表示:
![019-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-05.jpg?sign=1738898961-Vq6OSkiVTJ0IeZ1wr1mLYDCoczNeTNd0-0-649349ae6c05c5cfffb74295512127f0)
如果要隐藏0b
、0o
或0x
前缀,可以使用format()
函数:
![019-06](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-06.jpg?sign=1738898961-IeaZ8VGjYcPktMiLrPSIIZtWHgUhrc80-0-c0fabcc19ed54e72186547e28b1248ee)
负整数用负号作为标识:
![019-07](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/019-07.jpg?sign=1738898961-HJPfLO7ZgoAA0rYBoHfAbPaRnzt3z8oY-0-7577760db6dac08ee9e69907cc14b2b8)
2. chr()
函数
Python的chr()
函数用一个正整数作为形参,并将其转换为对应的字母值(如果存在)。字母A到Z的十进制表示形式为65
到91
(对应于十六进制的41
到5b
),小写字母a到z的十进制表示形式为97
到122
(十六进制为61
到7b
)。
下面是使用chr()
函数打印大写字母A的示例:
![020-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-01.jpg?sign=1738898961-2y6HWT2sTnOds6n5lCXrs45wlJXZhwNg-0-e174a230b31d82c4ddfd4528a2e48639)
下面的代码打印一系列整数的ASCII值:
![020-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-02.jpg?sign=1738898961-uUDDanArnKsNKJr93Ww4yENQCO1itOlX-0-90e7ce85bec50e61dde518176f0a9cea)
注意:Python 2使用ASCII字符串,而Python 3使用UTF-8。
你可以用以下代码来表示一定范围内的字符:
![020-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-03.jpg?sign=1738898961-U2ToOcS16g0VxzVV9EBQgsQ0Nt4di4fX-0-e5ddabb779b9f6ff7e6ecb6685852fb7)
但下面的等效代码更加直观:
![020-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-04.jpg?sign=1738898961-NPgBk6Tzcd7tIq71kQD7p9rExHL1tJqQ-0-0997840a3b1795e5506aa075aed76c1a)
如果要显示小写字母的结果,请将上面的(65,91)
更改为以下任意一条语句:
![020-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-05.jpg?sign=1738898961-4w86nIEyRqptIjKsCYdC6XM31myLYzaR-0-6fedb9d483bb694986ae84a6033068be)
3. Python中的round()
函数
Python的round()
函数可以将十进制值舍入到最接近的精度:
![020-06](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-06.jpg?sign=1738898961-Er7luhQLRBpQ5D0A80DlwuHYjSblsixR-0-305828fdf198e785c94bac4c5ae7a25f)
4. 在Python中格式化数字
Python允许在打印十进制数字时指定小数精度的位数,如下所示:
![020-07](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/020-07.jpg?sign=1738898961-DyIA0Oj3hndd00DUEQa8J6udG6y7WIUA-0-2d283876fc768a85becab69dcf627cef)
5. 使用分数
Python支持Fraction()
函数(在fractions
模块中定义),该函数接受两个整数,分别代表分数的分子和分母(分母必须为非零)。这里显示了几个在Python中定义和使用分数的示例:
![021-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/021-02.jpg?sign=1738898961-IxSDG0P1kMA4FSye7dPCb4kqZlKzFb0f-0-da2c085bfd01d0d0ff9200b8352eb7ed)
在深入研究适用于字符串的Python代码之前,下一节将简要讨论Unicode和UTF-8两种字符编码。
1.3.2 字符串
1. Unicode和UTF-8
Unicode字符串由介于0
到0x10ffff
之间的数字序列组成,其中每个数字代表一组字节。编码是将Unicode字符串转换为字节序列的方式。在各种编码中,通用转换格式(Unicode Transformation Format,UTF)-8格式可能是最常见的,也是许多系统的默认编码。UTF-8中的数字8表示编码使用8位数字,而UTF-16使用16位数字(但是这种编码不太常见)。
ASCII字符集是UTF-8的子集,因此可以将有效的ASCII字符串读取为UTF-8字符串,而无须任何重新编码。此外,Unicode字符串也可以转换为UTF-8字符串。
使用Unicode
Python支持Unicode,这意味着你可以使用不同的语言表示字符。Unicode数据能以与字符串相同的方式被存储和处理。Unicode字符串可以通过添加前缀字母“u”来创建,如下所示:
![022-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/022-01.jpg?sign=1738898961-r73EzvOzzOH0Zkm0NsLCaWX2OX8qnCJT-0-92279f6cb4bd9b5fddf71538722c9b71)
通过指定特殊字符的Unicode值,可以在字符串中包含特殊字符。例如,在Unicode字符串中嵌入一个空格(其Unicode值为0x0020):
![022-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/022-02.jpg?sign=1738898961-oxZfSiv3Fb9rSj9smc306zc5KhDIA1bl-0-2bf7eb823e0d9968d556f564a170e89e)
清单1.1说明了如何显示日语字符串和中文(普通话)字符串。
清单1.1 Unicode1.py
![022-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/022-03.jpg?sign=1738898961-sokHnOMQzyJOtfAddZQRhEmTVFNIvy35-0-998146aec9e85af0742195c67d39cebd)
清单1.1的输出结果如下:
![022-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/022-04.jpg?sign=1738898961-wrCxkorYzu2bgC7sbKDm0VpaYiI4hMVk-0-5b7a3caef94ad149f2d0f65d7dbb99a6)
本章后面将介绍如何使用内置的Python函数对文本字符串进行“切片”。
2. 处理字符串
Python 2中的字符串是一系列的ASCII编码字节,你可以使用“+”运算符连接两个字符串。下面的代码示例说明了如何打印一个字符串,然后连接两个单字母字符串:
![022-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/022-05.jpg?sign=1738898961-VQxRshHqM0SuWG5WCGLDl4YxJItcIWRw-0-070933074a1dc459124a23204955cec5)
你可以使用“+”或“*”来连接相同的字符串,如下所示:
![023-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/023-01.jpg?sign=1738898961-cYeTUIT9lV0KURgSNEWiW1CnZ56FXq4e-0-52435d45beced21ce3dc38a82f512a46)
可以把字符串赋值给变量,并用print
命令打印:
![023-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/023-02.jpg?sign=1738898961-9TVV7MSwLFkTRtKqhDUJccN0ILAP1k6K-0-9619c01b4ac7606dfd91f62e0240606b)
也可以“解压缩”字符串当中的字母,并赋值给变量,如下所示:
![023-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/023-03.jpg?sign=1738898961-UgCrHW5SpwzMP1qJmYZckSBYriqYVw5X-0-61b79b69d909496e6326a6006ad68531)
上述代码片段展示了提取文本字符串中的字母是非常简单的。第3章将介绍如何“解压缩”其他Python数据结构。
还可以从字符串中提取子字符串,如下所示:
![023-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/023-04.jpg?sign=1738898961-Hl8b3XfXlaIF5WIJ6Zjq0bktaNymfDO0-0-b13962c7708a62aa11a6f69bf8f65731)
但如果你试图将两个字符串“相减”,则会报错:
![023-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/023-05.jpg?sign=1738898961-FyQvy2GhdGav6WWUpuZpNZvdi2n1Xc48-0-f0333871af45c9483fc570ad0c76137b)
Python中的try/except
结构(本章后面会讨论)可以更优雅地处理上述异常情况。
(1)字符串的比较
lower()
和upper()
方法可以将字符串分别转换为小写和大写,如下所示:
![024-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/024-01.jpg?sign=1738898961-C0GrSqZpryNXx1bjCr5Ihc5AZkA0pte7-0-f8b255a4d2f8d85812e3f49b5e54d340)
lower()
和upper()
方法在比较两个不区分大小写的ASCII字符串时很有用。清单1.2说明了如何用lower()
函数比较两个ASCII字符串。
清单1.2 Compare.py
![024-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/024-02.jpg?sign=1738898961-FdSptfq4fxbWX6W6pmnd2mq1FdKuK895-0-2b829742b9bb3809ff74c42838f0e6bd)
由于x
包含大小写混合的字母,y
包含小写字母,因此清单1.2的输出结果为:
![024-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/024-03.jpg?sign=1738898961-JpGbPkTIrtB5pOLJefNpGNwf2GUB8ECF-0-33a8b03937ea20fea99087a8d3994df1)
(2)在Python中格式化字符串
Python提供了string.lstring()
、string.rstring()
和string.center()
函数来处理文本字符串的位置,其功能分别为左对齐、右对齐和居中。如前面所述,Python还提供了用于高级插入功能的format()
方法。
在Python解释器中输入以下命令:
![024-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/024-04.jpg?sign=1738898961-0R45Bb9YHTirJV8S8cwqSdKRLGqjDvjH-0-a9eedc9204a66fd9fa9bb3d1c280ba2d)
得到如下输出结果:
![024-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/024-05.jpg?sign=1738898961-gfbKNaCIml1I0BLDpA1tDZ8B7eeYAD98-0-133d7823b7c4c304be6ba0c37fd97002)
Python中的未初始化变量和None值
Python区分未初始化变量和None值。前者是尚未分配值的变量,而None
值则表示“没有值”。集合和方法通常会返回None
值,你可以在条件逻辑中检测None
值(见第2章)。
下面将说明如何使用内置的Python函数对文本字符串进行“切片”。
(3)字符串的切片
Python支持用数组表示提取字符串的子字符串(即“切片”)。切片的句法为start:stop:step
,其中start
、stop
和step
值都是整数,分别用于指定开始值、结束值和步长。有趣的是,切片的步长可设为-1,表示从字符串的右侧进行操作,而非左侧。
字符串切片的一些示例如下:
![025-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/025-01.jpg?sign=1738898961-dC8KCbsjTm6iFXkrYjIX1EpfZaKQoyTJ-0-bac5bdc7264bebb8b49301d62f1a3d87)
上述代码的输出结果为:
![025-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/025-02.jpg?sign=1738898961-1Wrz8KMKmhC41O5QhMdhoeDuWAiSH4c1-0-bc5bd07a9baf3ac3fbc79e1c23e9bca2)
后面将介绍如何在一个字符串中插入另一个字符串。
(4)数字和字母字符的检查
Python可以检查字符串中的每个字符,然后判断其是否为真正的数字或字母字符。
清单1.3的CharTypes.py
说明了如何确定字符串是否包含数字或字符。如果你尚不熟悉其中的“if
”条件语句,请参阅第2章的详细内容。
清单1.3 CharTypes.py
![025-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/025-03.jpg?sign=1738898961-Xw8pooQrvXaav6tViHiu1i71AlkJsTkf-0-29048d4c72dab702bf723e6773788656)
清单1.3首先对一些变量进行了初始化,然后在2个条件判断中使用isdigit()
函数检查str1
和str2
是否为数字,之后使用isalpha()
函数检查str3
、str4
和str5
是否为字母字符串。清单1.3的输出结果如下:
![026-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-01.jpg?sign=1738898961-PdZDfKv0CZcUuBVDAdmIYy5tUcvjd3cF-0-10d5a8ddc87516c3ed419747f4d67014)
(5)在其他字符串中搜索和替换一个字符串
Python提供了在文本字符串中搜索和替换一个字符串的方法。清单1.4的FindPos1.py
说明了如何使用find
函数搜索一个字符串中是否存在另一个字符串。
清单1.4 FindPos1.py
![026-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-02.jpg?sign=1738898961-7hls0kw0OoriWYOP0nsH7IEOctKCrKCh-0-e8dda4b5fee34ba23f9e675592f44bd1)
清单1.4先对变量item1
、item2
和text
进行初始化,然后在字符串text
中搜索item1
和item2
的内容索引。Python中的find()
函数返回第一次成功匹配的位置,如果匹配失败,则find()
函数返回-1。
清单1.4的输出结果如下:
![026-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-03.jpg?sign=1738898961-nsZZ0D92kH7n5xaZB8ksReM9LFb31A1b-0-f866b1bf096a6d4642eab130e143d7b7)
除了使用find()
方法,还可以使用in
运算符检查某元素是否存在,如下所示:
![026-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-04.jpg?sign=1738898961-P7yhJd2sOb2WUhEX8xZVQN68B1faCodI-0-72dc51d25f6e8a8511a5f6aadc2dd309)
清单1.5的Replace1.py
说明了如何用一个字符串替换另一个字符串。
清单1.5 Replace1.py
![026-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-05.jpg?sign=1738898961-DqAlhvOi4tUWsHeTqRp53gL3Jv4043Qa-0-6aecb38b9b0c23dd4b2a4d0f7d4b8229)
清单1.5首先初始化文本变量,然后打印内容,之后则将字符串文本中出现的“is a”替换为“was a”,再打印修改后的字符串。清单1.5的输出结果如下:
![026-06](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/026-06.jpg?sign=1738898961-k5dj7o1Ysmt72IXVpZKrvQ7i7vLK8C7G-0-93195faa914992c4e313eea62572363f)
(6)删除开头和结尾字符
Python提供了函数strip()
、lstrip()
和rstrip()
来删除文本字符串中的字符。清单1.6的Remove1.py
说明了如何搜索字符串。
清单1.6 Remove1.py
![027-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-01.jpg?sign=1738898961-Tq3LZOdWbwydhRdvfDYAsSm5RUTJuSb9-0-ee76fca7f51bd3104a1e1aca8d3859db)
清单1.6首先将字母x和文本变量的内容连接起来,然后打印结果。第三行和第四行代码删除了字符串文本中的前导空格,然后把结果追加到字母x后面。第五行和第六行代码删除了字符串文本中的结尾空格(注意,前导空格已被删除),然后将结果追加到字母x后面。
清单1.6的输出结果如下:
![027-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-02.jpg?sign=1738898961-qP35pDzVE35kWkz3L5DC0g5XAFURCung-0-db8d5a3aafb2b5b2ecd1d4e5fce66357)
如果要删除文本字符串内的多余空格,请使用前面介绍的replace()
函数。下面的示例说明了如何实现这个操作,其中的re
模块将在附录A介绍:
![027-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-03.jpg?sign=1738898961-UmyGfkH5VY8LSYKtuREyJTvvyQdJjTRv-0-b631812cb54da860c5277504b745da1c)
上述代码的输出结果如下:
![027-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-04.jpg?sign=1738898961-Gq9JDuboeJNrVPFtLVzY4hN102NWXOMZ-0-0f351f682c88e94a4de2fb2ebe7b1be4)
第2章将介绍如何使用join()
函数来删除文本字符串中的多余空格。
3. 打印不带换行符的文本
如果想在多条print
语句的输出对象之间消除空格和换行符,则可以使用连接或write()
函数。
第一种方法是在打印结果之前使用str()
函数连接每个字符串对象。例如,在Python中运行以下语句:
![027-05](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-05.jpg?sign=1738898961-I0rFxjG2ZU8jZb5wtnIdqtVa0UByNv2T-0-bfb0e0addbbee1c0fd7033126774a4c3)
它的输出如下:
![027-06](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/027-06.jpg?sign=1738898961-SOmHXnXvFoyKmxyZvegtEzubPQd7Oiaq-0-78c4d6430b061bf857180e7216c91817)
上面一行即为数字9和255(为十六进制数字0xff的十进制值)以及-3.1的连接。
这里顺便提示,str()
函数可以与模块和用户定义的类一起使用。下面的例子涉及Python内置模块sys
:
![028-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/028-01.jpg?sign=1738898961-BR1ej3UhLGInAmnoTmGyATKz1eF10lZi-0-c8b27631ddc8d65601af5c7ecdcba44c)
以下代码片段说明了如何使用write()
函数显示字符串:
![028-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/028-02.jpg?sign=1738898961-NPnMhMQCS3iU3Ykbr5irH0btezQJ1Ql3-0-18b2ffa9c746f62ac982288408b36808)
4. 文本对齐
Python提供了对齐文本的方法ljust()
、rjust()
和center()
。ljust()
和rjust()
函数分别使文本字符串左对齐和右对齐,center()
函数使字符串居中。下面的代码示例说明了相关功能:
![028-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/028-03.jpg?sign=1738898961-lSelz9SKjmPHyNo3z65fKcnqfj9K65Gl-0-f1afbc38b977de07fb7836b99ac22c81)
Python的format()
函数可用于对齐文本。使用字符<、>或^,以及所需的宽度数值,可以分别实现文本左对齐、右对齐和居中。以下示例说明了如何指定文本对齐方式:
![028-04](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/028-04.jpg?sign=1738898961-r56e0XPV8U2JhdgxxhVJa8cGBm6KWUeF-0-70fd8f77a43b539a7650552c3589d39f)
1.3.3 处理日期
Python提供一系列与日期相关的函数,详细介绍可访问下列网址:
https://docs.python.org/3/library/datetime.html
清单1.7的Datetime2.py
脚本,显示了各种与日期相关的值,例如,当前日期和时间、星期、月、年,以及自本纪元(epoch)以来的时间(以秒为单位)。
清单1.7 Datetime2.py
![029-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/029-01.jpg?sign=1738898961-bClmMte5fVbrs3EBSFJEVmpKY7RffLuR-0-dc9a87dc1d78994a225ac418b8c6bc19)
清单1.8是运行清单1.7的代码生成的输出结果。
清单1.8 datetime2.out
![029-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/029-02.jpg?sign=1738898961-cneLuzJFrYLP2s0I7GKt3t2FdvMIm8Hc-0-bfbe12aedb983fc7b4cc30325e032b59)
Python还可以使用与日期相关的值执行算术计算,如下列代码所示:
![029-03](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/029-03.jpg?sign=1738898961-2ynNmq3FssZwLUoyKg3IprFUgqOorftc-0-232de26e3c658cdf1e5c49713b6392fd)
字符串转换为日期
清单1.9的String2Date.py
说明了如何将字符串转换为日期,以及如何计算两个日期之间的差。
清单1.9 String2Date.py
![030-01](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/030-01.jpg?sign=1738898961-nG9XitC6guOZMmQhDyTXIpdJzuR84br2-0-7532525e42d83cc5d3a858f3099a2b79)
清单1.9的输出如下所示:
![030-02](https://epubservercos.yuewen.com/8036B4/21821545908478506/epubprivate/OEBPS/Images/030-02.jpg?sign=1738898961-oRoHR82lIzgoUNXrD2s1ycsryEYIGozU-0-bb77da488b6c0f557cd9070d52f80e96)