【问题标题】:read bytes string from file in python3从python3中的文件中读取字节字符串
【发布时间】:2017-09-06 08:18:02
【问题描述】:

文件内容如下,文件编码为utf-8:

cd232704-a46f-3d9d-97f6-67edb897d65f    b'this Friday, Gerda Scheuers will be excited \xe2\x80\x94 but she\xe2\x80\x99s most excited about the merchandise the movie will bring.'

这是我的代码:

with open(file, 'r') as f_in:
    for line in f_in:
        tokens = line.split('\t')
        print(tokens[1])

我想得到正确的答案 - “这个星期五,Gerda Scheuers 会很兴奋 - 但她最兴奋的是这部电影将带来的商品。”

print(b'\xe2\x80\x94'.decode('utf-8')) #convert into ASCII 

但我无法从文件中读取字节。如果我打开一个带有字节的文件,我需要解码该行来拆分它。

【问题讨论】:

    标签: python string python-3.x byte


    【解决方案1】:

    您可以使用ast.literal_eval 将字节文字转换为字节:

    然后,解码得到字符串对象:

    >>> ast.literal_eval(r"b'excited \xe2\x80\x94 but she\xe2\x80\x99s'")
    b'excited \xe2\x80\x94 but she\xe2\x80\x99s'
    >>> ast.literal_eval(r"b'excited \xe2\x80\x94 but she\xe2\x80\x99s'").decode('utf-8')
    'excited — but she’s'
    

    with open(file, 'r') as f_in:
        for line in f_in:
            tokens = line.split('\t')
            # if len(tokens) < 2:
            #    continue
            bytes_part = ast.literal_eval(tokens[1])
            s = bytes_part.decode('utf-8')  # Decode the bytes to convert to a string
    

    【讨论】:

      猜你喜欢
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      相关资源
      最近更新 更多