gpt4 book ai didi

python - 拆分字节数组然后在 Python 中将其转换为字符串的有效方法

转载 作者:行者123 更新时间:2023-11-28 22:34:12 24 4
gpt4 key购买 nike

我有一个包含字符的 numpy 字节数组,后跟 b'',然后是其他字符(包括在解码时引发 Unicode 错误的奇怪字符):

bytes = numpy.array([b'f', b'o', b'o', b'', b'b', b'a', b'd', b'\xfe', b'\x95', b'', b'\x80', b'\x04', b'\x08' b'\x06'])

我想获取第一个 b'' 之前的所有内容。

目前我的代码是:

txt = []
for c in bytes:
if c != b'':
txt.append(c.decode('utf-8'))
else:
break
txt = ''.join(txt)

我想有一种更高效和 Pythonic 的方法可以做到这一点。

最佳答案

我喜欢你的方式,它很明确,for 循环是所有人都能理解的,而且与其他方法相比,它并没有那么慢。

我提出的一些建议是将您的条件从 if c != b'' 更改为 if c 因为非空字节对象将是真实的并且,*不要将您的列表命名为 bytes,您会屏蔽内置的!将其命名为 bt 或类似的名称:-)

其他选项包括 itertools.takewhile,只要谓词成立,它就会从可迭代对象中获取元素;你的操作看起来像:

"".join(s.decode('utf-8') for s in takewhile(bool, bt))

这稍微慢一点但更紧凑,如果您是单线爱好者,这可能会吸引您。

使用 index 和 slice 会稍微快一些,也比较紧凑:

"".join(b.decode('utf-8') for b in bt[:bt.index(b'')])

虽然紧凑,但也存在可读性问题。

简而言之,我会选择 for 循环,因为在我看来可读性非常 pythonic。

关于python - 拆分字节数组然后在 Python 中将其转换为字符串的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39224764/

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