如何在Python中获取字符的ASCII值为int ?
当前回答
从这里开始:
函数ord()获取int值 焦的。如果你想的话 转换回来后玩 数字,函数chr()做的技巧。
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
在python2中,还有unichr函数,返回序号为unichr参数的Unicode字符:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
在python3中,您可以使用chr而不是unichr。
ord() - Python 3.6.5rc1文档
ord() - Python 2.7.14文档
其他回答
要获取字符的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]
公认的答案是正确的,但是如果您需要将一大堆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的本地测试中,使用map(ord, mystr)迭代一个str以获得其ASCII码,开始时使用len 10 str的时间大约是在Py2上使用bytearray(mystr)或在Py3上使用mystr.encode(' ASCII ')的两倍,随着str变长,为map(ord, mystr)支付的乘数上升到~6.5x-7x。
唯一的缺点是转换是一次性完成的,因此您的第一个结果可能需要更长的时间,而真正巨大的str将具有相应大的临时bytes/bytearray,但除非这迫使您进行页面抖动,否则这可能无关紧要。
你正在寻找:
ord()
从这里开始:
函数ord()获取int值 焦的。如果你想的话 转换回来后玩 数字,函数chr()做的技巧。
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
在python2中,还有unichr函数,返回序号为unichr参数的Unicode字符:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
在python3中,您可以使用chr而不是unichr。
ord() - Python 3.6.5rc1文档
ord() - Python 2.7.14文档
注意,ord()本身并没有给你ASCII值;它给你字符的数值,不管它是什么编码。因此,如果你使用Latin-1, ord('ä')的结果可能是228,如果你使用UTF-8,它可能引发TypeError。如果你传递一个Unicode,它甚至可以返回Unicode代码点:
>>> ord(u'あ')
12354
推荐文章
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 我如何才能找到一个Python函数的参数的数量?
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误
- 如何检索Pandas数据帧中的列数?
- except:和except的区别:
- 错误:“字典更新序列元素#0的长度为1;2是必需的”