字符串转换python

2024-09-27 02:20:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于python3中字符串转换的小问题

s = '\x001\x002\x001\x000\x005\x005\x000\x004\x000\x000\x00'

打印->;给出输出:

1 2 1 0 5 5 0 4 0 0

但是,当我尝试使用以下命令转换字符串时:

bytes(s, 'utf16').decode('utf16'),我得到'\x001\x002\x001\x000\x005\x005\x000\x004\x000\x000\x000\x00'

以编程方式获得与打印相同的输出的方法是什么


Tags: 字符串命令gtbytes编程方式python3decode
2条回答

你只需要解码这个二进制文件,你就会得到答案

x = b'\x001\x002\x001\x000\x005\x005\x000\x004\x000\x000\x00'
str1 = x.decode('utf-8')
print(" ".join([i for i in str1 if ord(i) != 0]))

第二种解决方案:

x = '1 2 1 0 5 5 0 4 0 0'
str_utf32 = x.encode('utf16')
print("Encoding :",str_utf32)
print("Decoding :",str_utf32.decode('utf16'))

输出

Encoding : b'\xff\xfe1\x00 \x002\x00 \x001\x00 \x000\x00 \x005\x00 \x005\x00 \x000\x00 \x004\x00 \x000\x00 \x000\x00'
Decoding : 1 2 1 0 5 5 0 4 0 0

在第一个示例中,您打印字符串s,控制台将忽略\x00。你做一个print(s)

在最后一行中,从python提示符获取字符串。如果您打印它:print(bytes(s,'utf-16').decode('utf-16')),您将得到您想要的

因此,Python提示符向您显示变量,并带有上下文(例如,您还可以看到'符号),但不能看到字符串的真实表示形式(您在print中有哪些符号)

增编:

print将在其参数中打印字符串,最终调用str()将参数转换为字符串。但是python提示符将打印变量的表示形式(以repr()给出)。因此,您可以print(repr(bytes(s,'utf-16').decode('utf-16')))获得与在python交互会话中获得的字符串相同的字符串,但作为字符串。您可以分配这样的函数(r = repr(bytes(...).decode(...)),因此您有r[0]is'r[1]is\,等等,而不是打印

相关问题 更多 >

    热门问题