如何获取字符的 ASCII 值
- 2024-12-23 08:43:00
- admin 原创
- 76
问题描述:
如何在 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']
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件