gpt4 book ai didi

string - Python 3 中如何在字节和字符串之间进行转换?

转载 作者:行者123 更新时间:2023-12-02 11:02:23 27 4
gpt4 key购买 nike

这是一个 Python 101 类型的问题,但当我尝试使用一个似乎将字符串输入转换为字节的包时,它让我困惑了一段时间。

正如您将在下面看到的,我自己找到了答案,但我觉得值得在这里记录下来,因为我花了很多时间来挖掘正在发生的事情。它似乎对 Python 3 是通用的,所以我没有引用我正在使用的原始包;这似乎不是一个错误(只是特定的包有一个 .tostring() 方法,显然没有产生我所理解的字符串......)

我的测试程序是这样的:

import mangler                                 # spoof package

stringThing = """
<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>
"""

# print out the input
print('This is the string input:')
print(stringThing)

# now make the string into bytes
bytesThing = mangler.tostring(stringThing) # pseudo-code again

# now print it out
print('\nThis is the bytes output:')
print(bytesThing)

此代码的输出如下:

This is the string input:

<Doc>
<Greeting>Hello World</Greeting>
<Greeting>你好</Greeting>
</Doc>


This is the bytes output:
b'\n<Doc>\n <Greeting>Hello World</Greeting>\n <Greeting>\xe4\xbd\xa0\xe5\xa5\xbd</Greeting>\n</Doc>\n'

因此,需要能够在字节和字符串之间进行转换,以避免最终将非 ascii 字符变成繁文缛节。

最佳答案

上述代码示例中的“mangler”执行的操作与此相同:

bytesThing = stringThing.encode(encoding='UTF-8')

还有其他方法可以编写此代码(特别是使用bytes(stringThing,encoding='UTF-8'),但是上面的语法使发生的事情以及要做什么变得显而易见恢复字符串:

newStringThing = bytesThing.decode(encoding='UTF-8')

当我们这样做时,原始字符串就会被恢复。

注意,使用 str(bytesThing) 只是转录所有冗长的内容,而不将其转换回 Unicode,除非您特别请求 UTF-8,即 str(bytesThing,encoding=' UTF-8')。不指定编码不会报错。

关于string - Python 3 中如何在字节和字符串之间进行转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com