如何在Python中获取ASCII西里尔字母的字符代码?

3

ord() 返回 Unicode 码,我需要 ASCII 码。

>>> s = "Йог" #cyrillic
>>> for char in s:
...     print(ord(char))
... 
1049 #unicode
1086 #unicode
1075 #unicode

我需要ASCII码。如何获取?(下面)

enter image description here


4
据我所知,这并不是 ASCII 码,因为 ASCII 码只包含拉丁字母,而且没有针对大于128的元素的规定。 - Willem Van Onsem
是的,127个以上(从128到255)的符号都是西里尔字母。当我使用Python 2.7时,一切都运行良好。相反,我尝试将ASCII转换为Unicode。但现在,使用Python 3.5和Unicode,一切都正常工作,如果我需要ASCII,则会得到象形文字。我需要的确切是ASCII西里尔代码(Visual Studio中的多字节字符集)。 - Nika_Rika
4
这只是简单的CP1251编码。Python应该能够将Unicode转换为这种编码。 - Joey
是的,它是Windows-1251编码。我尝试进行转换,但无法得到正确的代码。 - Nika_Rika
3个回答

7
你做不到;ASCII 中没有西里尔字母。你展示的表格是众多"扩展 ASCII"字符集之一的Windows-1251(又名 CP1251)。因此,为了获取该编码中字符的代码点,你需要先将字符串编码为 CP1251,然后取得结果字节的值:
# Assuming Python 3
s = "Йог".encode('cp1251')
for b in s:
    print(b)

谢谢,我尝试了这种方式,出现了很多错误,现在我知道原因了。现在它可以工作了! - Nika_Rika

0
glagolitsa = "А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я"
Glagolitsa = glagolitsa.split(',')
Glagolitsa

for i in range(len(Glagolitsa)):
    char = Glagolitsa[i]
    print(ord(char))

glagolitsa = glagolitsa.lower().split(',')

for i in range(len(glagolitsa)):
    char = glagolitsa[i]
    print(ord(char))

for i in range(1040, 1104):
    print(chr(i))

我也忙着为Python制作ASCII工具库,所以也许我会将俄语以及其他语言添加进去。 - Jean Pierre

0
如果我正确理解了你的问题,那么这个解决方案应该适合你。
a = [chr(i) for i in range(1072, 1104)]
print(a)

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接