【问题标题】:convert string to bytes in python在python中将字符串转换为字节
【发布时间】:2021-05-14 13:26:02
【问题描述】:

我在 csv 中有一个列,该列具有此值作为字符串:

b'\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@'

如何在 python 中将此字符串转换为字节对象?

我试过bytes(string_var, 'utf-8'),但我得到了:

b"b'\\x00\\x00\\x00\\xc0\\x99MC@\\x00\\x00\\x00\\xc0\\x99MC@\\x00\\x00\\x00\\xc0\\x99MC@\\x00\\x00\\x00\\xc0\\x99MC@\\x00\\x00\\x00\\xc0\\x99MC@\\x00\\x00\\x00\\xc0\\x99MC@'"

我正在用 pandas 读取 csv 文件

提前致谢

[编辑]

对cmets的回答:

1- 我的预期结果是:b'\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\ x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@\x00\x00\x00\xc0\x99MC@'(只有一个'b'和对象类型为字节而不是字符串)

2-我从以下位置获得了这个 csv:带有字节数组列的 sql => pandas dataframe => csv 文件

ps: 在从熊猫创建 csv 文件之前,我使用以下命令:

blob['Raw'] = blob['Raw'].apply(lambda x: x.tobytes())

否则,csv 文件将存储 '' 字符串

【问题讨论】:

  • 使用ast.literal_eval()
  • 你期待什么结果?对我来说,这已经是字节字符串了——但是 Python 以不同于你预期的方式显示它。如果它不能将值显示为 char,那么它会显示其代码 - 即。 \x00
  • 你确定你有真实的csv 吗?你是如何创建这个文件的?或者你从哪里得到的?也许不是csv,而是一些numpy.array或图片。

标签: python arrays pandas csv


【解决方案1】:

@Barmar 是救命稻草

我使用ast.literal_eval 并工作:

from ast import literal_eval

blob_csv['Raw'] = blob_csv['Raw'].apply(lambda x: literal_eval(str(x)))

感谢 Barmar 和 How to use ast.literal_eval in a pandas dataframe and handle exceptions

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2014-09-23
    • 1970-01-01
    • 2014-03-07
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多