如何在Python 3中解析字节串?

4
基本上,我有两个字节串在单独的一行中,就像这样:

b'\xe0\xa6\xb8\xe0\xa6\x96 - \xe0\xa6\xb6\xe0\xa6\x96\n'

我正在使用urllib从在线文件导入一个包含Unicode字符串的文本,我想比较单独的字节串,以便我可以替换错误的字节串。然而,我找不到任何方法来解析字符串,以便我在两个不同的变量中获取\xe0\xa6\xb8\xe0\xa6\x96\xe0\xa6\xb6\xe0\xa6\x96
我尝试将其转换为原始字符串,如str(b'\xe0\xa6\xb8\xe0\xa6\x96'),索引实际上是有效的,但在这种情况下,我无法返回到最初的字节串。
有可能吗?
2个回答

4
我建议尝试类似这样的方法...
arr = b'\xe0\xa6\xb8\xe0\xa6\x96 - \xe0\xa6\xb6\xe0\xa6\x96\n'

splt = arr.decode().split(' - ')

b_arr1 = splt[0].encode()
b_arr2 = splt[1].encode()

我在 Python 3 终端中尝试了一下,它可以正常工作。

嘿,那个有效!非常感谢! 还有一个问题,我如何去掉第二个字节串末尾的换行符?同样的 decode() - encode() 过程,希望可以吗? - srdg

-1
我会这样做:
a = b'\xe0\xa6\xb8\xe0\xa6\x96 - \xe0\xa6\xb6\xe0\xa6\x96\n'

parts = [part.strip() for part in a.decode().split('-')]

first_part = parts[0].encode()
second_part = parts[1].encode()

1
strip() 函数的目的是什么? - Jake
@JakeStephens 它会去掉空格,只留下所需的字符。以防在“-”之前和之后有多个空格。 - Jahongir Rahmonov
1
通常在处理二进制数据时,您不希望这样做...它不是真正的文本,您认为的“空格”可能不是您想象的那样。 - Havenard

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