【问题标题】:How to parse a byte string in Python 3?如何在 Python 3 中解析字节字符串?
【发布时间】:2018-01-10 04:16:04
【问题描述】:

基本上,我在一行中有两个字节串,如下所示:

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') 这样的原始字符串,并且索引确实有效,但在这种情况下,我一开始就无法恢复到原始字节串。

有可能吗?任何帮助都会很棒!

【问题讨论】:

    标签: python python-3.5 string-parsing python-unicode


    【解决方案1】:

    我会推荐尝试这样的事情......

    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() 程序,我希望?
    【解决方案2】:

    我会这样做:

    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()
    

    【讨论】:

    • strip() 函数的作用是什么?
    • @JakeStephens 它去除了空白,只留下所需的字符。以防-前后有多个空格@
    • 在处理二进制数据时通常不希望这样做......它不是真正的文本,你认为的“空格”可能不是你想的那样。
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多