Python Cookbook 第二版 汉化版 [Recipe 1.2] 字符与其对应的数字编码之间的转换

news/2024/7/5 3:08:05

Recipe 1.2. Converting Between Characters and Numeric Codes
Recipe 1.2. 字符与其对应的数字编码之间的转换

Credit: Luther Blissett

问题

您需要在字符与其对应的 ASCII(ISO)编码或 Unicode 编码之间相互转换。

 

解法

内建函数 ordchr 就是专门用来做这件事情的:

>>> print ord('a')
97
>>> print chr(97)
a

内建函数 ord 还可以将长度被视为 1 的 Unicode 字符串作为实参,其返回结果为 Unicode 代码数值(最大到 65536)。若要从 Unicode 代码数值转换为长度视为 1 的 Unicode 字符串,可以使用内建函数 unichr

>>> print ord(u'/u2020')
8224
>>> print repr(unichr(8224))
u'/u2020'

讨论

这大凡都是普通而无趣的任务,但有些时候,将字符(即 Python 中长度为 1 的字符串)与其对应的 ASCII 码或 Unicode 编码进行相互转换是有用处的。内建函数 ordchrunichr 满足了这方面的所有需求。特别需要注意的一点是 chr(n)str(n) 之间的天壤之别,初学者有时候会混淆两者的用意:

>>> print repr(chr(97))
'a'
>>> print repr(str(97))
'97'

chr 接收一个较小的整数作为实参,根据 ASCII 标准返回该整数值对应的字符;str 接收任何整数作为参数,返回该整数的十进制的字符串形式。

若要将字符串转换为字符编码组成的列表(list),可以组合使用内建函数 mapord 来完成:

>>> print map(ord, 'ciao')
[99, 105, 97, 111]

若要根据字符编码的列表来构建字符串,可以组合使用 ''.joinmapchr 来完成,例如:

>>> print ''.join(map(chr, range(97, 100)))
abc

请参见

Library Reference Python in a Nutshell 一书中关于内建函数 chrordunichr 的文档。
 





http://www.niftyadmin.cn/n/3651744.html

相关文章

只出现一次的数字 leetcode 刷题篇

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? int singleNumber(int* nums, int numsSize…

Designing Interfaces 概观 [好书一本]

http://www.oreilly.com/catalog/designinterfaces/Designing InterfacesBy Jenifer TidwellPublisher: OReillyPub Date: November 2005Print ISBN-10: 0-596-00803-1Print ISBN-13: 978-0-59-600803-1Pages: 352概观设计好界面不容易。用户要求软件具有良好的行为&#xff0c…

leetcode 刷题篇 java 二进制位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 1 的个数(也被称为汉明重量)。 提示: 请注意,在某些语言(如 Java)中…

Python Cookbook 第二版 汉化版 [Recipe 16.4] 将参数与函数关联起来(Currying)

Recipe 16.4. Associating Parameters with a Function (Currying)Recipe 16.4. 将参数与函数关联起来(Currying)(译注:本条目中出现“parameter”和“argument”两种字眼。其中的“parameter”似乎并不强调“形参”意味&#xff…

无重复字符的最长子串 leetcode java篇

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度 class Solution {public int lengthOfLongestSubstring(String s) {int[] map new int[127];// map {0};char[] arr s.toCharArray();int len arr.length;int l 0;int r 0;int max 0;while(…

Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

Recipe 1.1. Processing a String One Character at a TimeRecipe 1.1. 逐个处理字符串中的各个字符Credit: Luther Blissett[问题]您想逐个处理字符串中的各个字符。[解法]您可以构建一个列表,其中每个元素存放一个字符串中的字符(由于 Python 中没有用…

整数反转 leetcode java篇

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 class Solution {public …

Python Cookbook 第二版 汉化版 [00-2-Preface] Part 1

序言本书并非典型的 OReilly 图书。典型的 OReilly 图书是由一两位作者写就的完整文稿;而本书则不然,本书是一种新的“将开源软件开发原则应用于图书创作”的大胆尝试。Python 社区的300多位成员为本书内容作出了贡献。在本序言中,我们&#…