如何在Python中获取字符的ASCII值为int ?
当前回答
注意,ord()本身并没有给你ASCII值;它给你字符的数值,不管它是什么编码。因此,如果你使用Latin-1, ord('ä')的结果可能是228,如果你使用UTF-8,它可能引发TypeError。如果你传递一个Unicode,它甚至可以返回Unicode代码点:
>>> ord(u'あ')
12354
其他回答
公认的答案是正确的,但是如果您需要将一大堆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()获取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]
你正在寻找:
ord()
注意,ord()本身并没有给你ASCII值;它给你字符的数值,不管它是什么编码。因此,如果你使用Latin-1, ord('ä')的结果可能是228,如果你使用UTF-8,它可能引发TypeError。如果你传递一个Unicode,它甚至可以返回Unicode代码点:
>>> ord(u'あ')
12354
推荐文章
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID
- 在Python中重置生成器对象
- 用Python构建最小的插件架构
- model.eval()在pytorch中做什么?
- Tensorflow 2.0:模块“Tensorflow”没有属性“Session”
- 从环境文件中读入环境变量
- 在OSX 10.11中安装Scrapy时,“OSError: [Errno 1]操作不允许”(El Capitan)(系统完整性保护)
- 如何删除熊猫数据帧的最后一行数据
- 我如何在熊猫中找到数字列?
- 检查pandas数据框架索引中是否存在值
- 计算熊猫数量的最有效方法是什么?
- 如何在python中验证日期字符串格式?