首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3将ascii字符串解释为unicode字符串

python3将ascii字符串解释为unicode字符串
EN

Stack Overflow用户
提问于 2015-04-09 18:20:42
回答 1查看 277关注 0票数 0

我有一个文本文件,打开时,如下所示:

代码语言:javascript
复制
\xF0\x9F\x98\x81
\xF0\x9F\x98\x82
\xF0\x9F\x98\x83
\xF0\x9F\x98\x84
\xF0\x9F\x98\x85

十六进制如下所示:

代码语言:javascript
复制
0000000 5c 78 46 30 5c 78 39 46 5c 78 39 38 5c 78 38 31
0000010 0a 5c 78 46 30 5c 78 39 46 5c 78 39 38 5c 78 38
0000020 32 0a 5c 78 46 30 5c 78 39 46 5c 78 39 38 5c 78
0000030 38 33 0a 5c 78 46 30 5c 78 39 46 5c 78 39 38 5c
0000040 78 38 34 0a 5c 78 46 30 5c 78 39 46 5c 78 39 38

我试图在Python中打印字符串,好像是unicode字符串一样。下列一切都失败了:

代码语言:javascript
复制
with open ("file") as f:
    for row in f:
        x = row.split()
        for i in x:
            print(i)
            print(bytes(i, encoding='utf-8'))
            print(bytes(i, encoding='utf-8').decode('unicode-escape'))

打印

代码语言:javascript
复制
\xF0\x9F\x98\x81
b'\\xF0\\x9F\\x98\\x81'
ð 
\xF0\x9F\x98\x82
b'\\xF0\\x9F\\x98\\x82'
ð
\xF0\x9F\x98\x83
b'\\xF0\\x9F\\x98\\x83'
ð
\xF0\x9F\x98\x84
b'\\xF0\\x9F\\x98\\x84'
ð
\xF0\x9F\x98\x85
b'\\xF0\\x9F\\x98\\x85'
ð

我试图实现的是,就像我直接输入了以下内容一样:

代码语言:javascript
复制
print(b'\xF0\x9F\x98\x81'.decode('utf-8'))
print(b'\xF0\x9F\x98\x82'.decode('utf-8'))
print(b'\xF0\x9F\x98\x83'.decode('utf-8'))
print(b'\xF0\x9F\x98\x84'.decode('utf-8'))
print(b'\xF0\x9F\x98\x85'.decode('utf-8'))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 18:54:57

unicode-escape给出具有指定代码点的Unicode字符串。latin1直接将其转换回字节字符串,因为latin1与前256个代码点之间存在1:1的映射。最后使用UTF-8将代码解码回Unicode。

代码语言:javascript
复制
data = rb'''\xF0\x9F\x98\x81
\xF0\x9F\x98\x82
\xF0\x9F\x98\x83
\xF0\x9F\x98\x84
\xF0\x9F\x98\x85'''

data = data.decode('unicode-escape').encode('latin-1').decode('utf8')
print(ascii(data))
print(data)

输出:

代码语言:javascript
复制
'\U0001f601\n\U0001f602\n\U0001f603\n\U0001f604\n\U0001f605'

注意:我的字体不支持字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29546061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档