如何获取字符的 ASCII 值

2024-12-23 08:43:00
admin
原创
76
摘要:问题描述:如何在 Python 中获取字符的ASCIIint值?解决方案 1:从这里:该函数ord()获取字符的 int 值。如果您在玩完数字后想要转换回来,该函数chr()可以帮您搞定。>>> ord('a') 97 >>> chr(97) 'a' >>>...

问题描述:

如何在 Python 中获取字符的ASCIIint值?


解决方案 1:

从这里:

该函数ord()获取字符的 int 值。如果您在玩完数字后想要转换回来,该函数chr()可以帮您搞定。

>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>

在 Python 2 中,还有一个unichr函数,返回以参数为序数的Unicodeunichr字符:

>>> unichr(97)
u'a'
>>> unichr(1234)
u'/u04d2'

在 Python 3 中,您可以使用chr而不是unichr


ord() - Python 3.6.5rc1 文档

ord() - Python 2.7.14 文档

解决方案 2:

请注意,它ord()本身并不提供 ASCII 值;它提供字符的数值(无论该字符采用何种编码)。因此,ord('ä')如果您使用的是 Latin-1,则的结果可能是 228,TypeError如果您使用的是 UTF-8,则可能会引发。如果您向它传递一个 unicode,它甚至可以返回 Unicode 代码点:

>>> ord(u'あ')
12354

解决方案 3:

您正在寻找:

ord()

解决方案 4:

接受的答案是正确的,但如果您需要一次性将一大堆 ASCII 字符转换为其 ASCII 代码,那么还有一种更聪明/更有效的方法。而不是这样做:

for ch in mystr:
    code = ord(ch)

或者稍微快一点:

for code in map(ord, mystr):

你可以将其转换为 Python 原生类型,直接迭代代码。在 Python 3 上,这很简单:

for code in mystr.encode('ascii'):

而在 Python 2.6/2.7 中,它只稍微复杂一些,因为它没有 Py3 样式bytes对象(bytes是的别名str,按字符进行迭代),但它们确实有bytearray

# If mystr is definitely str, not unicode
for code in bytearray(mystr):

# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):

编码为按序数本机迭代的类型意味着转换速度更快;在 Py2.7 和 Py3.5 的本地测试中,str使用迭代 a 来获取其 ASCII 码所map(ord, mystr)花的时间大约是 Py2 或 Py3 上 10 的两倍,并且随着时间的len流逝,支付的乘数上升到 ~6.5x-7x。str`bytearray(mystr)mystr.encode('ascii')str`map(ord, mystr)

唯一的缺点是转换是一次性完成的,因此您的第一个结果可能需要更长的时间,并且真正巨大的结果str将具有相应较大的临时bytes/ bytearray,但除非这迫使您进行页面抖动,否则这可能并不重要。

解决方案 5:

要获取字符的 ASCII 码,可以使用ord()函数。

以下是示例代码:

value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)

输出:

Your value here: qwerty
[113, 119, 101, 114, 116, 121]

解决方案 6:

您想找出字符的 ASCII 值。现在我提供字符的 ASCII 值的代码:

Python 中的代码模式: ord(character)

Python 代码示例: ord('A')
输出:
在此处输入图片描述

我提供了将 ASCII 值转换为字符的代码:

Python 中的代码模式: chr(ASCII value)

Python 代码示例: chr(66)

输出:
在此处输入图片描述

解决方案 7:

Numpy 还可用于获取字符的 ascii 值。如果您需要将大量字符转换为其 ascii/unicode 代码点,它特别有用。根据字符的数量,它可能比ord循环调用快几个数量级。

要使用它,请将字符串/字符包装在 numpy 数组中并将其视为int,它将返回字符在其所处的编码中对应的数值。

import numpy as np

# if the characters are in a list
lst = ['a', 'ä', 'あ']
ary = np.array(lst).view(int).tolist()   # [97, 228, 12354]


# if the characters are in a string
s = 'abc'
ar = np.array([s])
v = s_arr.view(int)                      # array([97, 98, 99])

附注:视图的一个特点是,如果您更改视图,原始视图也会更改。例如,如果我们想将所有字符都设为ar大写,我们可以这样做v

v -= 32
print(ar)   # ['ABC']
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   984  
  在项目管理领域,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节,它不仅验证了项目团队的专业能力,还直接关系到项目的成功与否。在这一评审过程中,沟通技巧的运用至关重要。有效的沟通不仅能够确保信息的准确传递,还能增强团队协作,提升评审效率。本文将深入探讨CDCP...
华为IPD流程   0  
  IPD(Integrated Product Development,集成产品开发)是一种以客户需求为核心、跨部门协同的产品开发模式,旨在通过高效的资源整合和流程优化,提升产品开发的成功率和市场竞争力。在IPD培训课程中,掌握关键成功因素是确保团队能够有效实施这一模式的核心。以下将从五个关键成功因素展开讨论,帮助企业和...
IPD项目流程图   0  
  华为IPD(Integrated Product Development,集成产品开发)流程是华为公司在其全球化进程中逐步构建和完善的一套高效产品开发管理体系。这一流程不仅帮助华为在技术创新和产品交付上实现了质的飞跃,还为其在全球市场中赢得了显著的竞争优势。IPD的核心在于通过跨部门协作、阶段性评审和市场需求驱动,确保...
华为IPD   0  
  华为作为全球领先的通信技术解决方案提供商,其成功的背后离不开一套成熟的管理体系——集成产品开发(IPD)。IPD不仅是一种产品开发流程,更是一种系统化的管理思想,它通过跨职能团队的协作、阶段评审机制和市场需求驱动的开发模式,帮助华为在全球市场中脱颖而出。从最初的国内市场到如今的全球化布局,华为的IPD体系在多个领域展现...
IPD管理流程   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用