Skip to Content
《学习 Python》第 5 版
book

《学习 Python》第 5 版

by Mark Lutz
May 2025
Intermediate to advanced
1648 pages
23h 5m
Chinese
O'Reilly Media, Inc.
Content preview from 《学习 Python》第 5 版

第 7 章 弦乐基础 弦乐基础

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

到目前为止,我们已经学习了数字并探索了 Python 的动态类型模型。我们深入核心对象之旅的下一个主要类型是 Python字符串--一个有序的字符集,用于存储和表示基于文本和字节的信息。我们在第 4 章中简要介绍了字符串。在这里,我们将更深入地重访字符串,补充一些我们之前跳过的细节。

本章的范围

在开始之前,我还想说明一下我们在这里不会涉及的内容。第 4 章简要介绍了Unicode字符串和文件--处理非 ASCII 文本的工具。对于一些程序员,尤其是互联网领域的程序员来说,Unicode 是一个重要工具。例如,它可以出现在网页、电子邮件内容和标题、FTP 传输、GUI API、目录工具以及 HTML、XML 和 JSON 文本中。

与此同时,Unicode 对于刚入门的程序员来说是一个沉重的话题,我现在遇到的许多(或大多数) Python 程序员在工作中仍然对整个话题一无所知。有鉴于此,本书将大部分 Unicode 故事放在高级主题部分的第 37 章,作为选读内容,并在此重点介绍字符串基础知识。

也就是说,本章只讲述了 Python 中字符串故事的一部分--大多数脚本使用的部分和大多数程序员需要了解的部分。本章探讨了基本的str 字符串类型,它处理 ASCII 文本,无论您使用哪个版本的 Python,它都能正常工作。尽管有意限制了范围,但由于str 在 Python 3.X 中也处理 Unicode,而单独的unicode类型在 2.X 中的工作原理与str 几乎相同,因此我们在这里学到的所有知识也将直接应用于 Unicode 处理。

统一码小故事

对于关心 Unicode 的读者,我还想对其影响做一个简要总结,并为进一步研究提供一些参考。从形式上看,ASCII 是 Unicode 文本的一种简单形式,但只是许多可能的编码和字母中的一种。来自非英语国家的文本可能使用截然不同的字母,在文件中存储时的编码也可能截然不同。

正如我们在第 4 章中看到的,Python 通过区分文本数据和二进制数据来解决这个问题,并为每种数据提供了不同的字符串对象类型和文件接口。每个 Python 行对字符串的支持各不相同:

  • Python 3.X中,有三种字符串类型:str 用于 Unicode 文本 (包括 ASCII),bytes 用于二进制数据 (包括编码后的文本),bytearraybytes 的可变变体。文件以两种模式工作:文本模式,即将内容 表示为str ,并实现 Unicode 编码;二进制模式,即处理原始bytes ,不进行数据转换。

  • Python 2.X 中,unicode 字符串表示 Unicode 文本,str 字符串同时处理 8 位文本和二进制数据,bytearray 作为 3.X 的回传端口在 2.6 及以后版本中可用。普通文件的内容只是以str 表示的字节,但codecs 模块打开 Unicode 文本文件,处理编码,并以unicode 对象表示内容。

尽管存在这些版本差异,但如果您确实需要关注 Unicode,您会发现它只是一个相对次要的扩展--一旦文本进入内存,它就是一个 Python 字符串,支持本章将要学习的所有基础知识。事实上,Unicode 的主要区别往往在于将其移入或移出文件所需的翻译(又称编码)步骤 。除此之外,它在很大程度上只是字符串处理。

不过,由于大多数程序员不需要提前掌握 Unicode 的细节,我还是将大部分细节移到了 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

学习 Java,第 6 版

学习 Java,第 6 版

Marc Loy, Patrick Niemeyer, Daniel Leuck
《高性能 Python》第二版

《高性能 Python》第二版

Micha Gorelick, Ian Ozsvald

Publisher Resources

ISBN: 9798341656963