gpt4 book ai didi

python - 将包含\x01 字符的字符串保存到磁盘

转载 作者:行者123 更新时间:2023-11-30 23:20:48 27 4
gpt4 key购买 nike

我需要向磁盘写入一串字符,其中包含用于分隔字段的 chr(1) 字符。最终我需要使用 read_csv()` 在 Pandas 中打开这个文件(希望使用 C 解析器,尽管现在有点相关)。

我的数据以字节形式存储在内存中:

> data?
Type: bytes
String form: b'foo\x01302.0\x011407339259000\nbar\x01206.0\x011407339259230\n < .. >

在上面的示例中,前两行是:

foo 102.0 1407339259000 
bar 206.0 1407339259230

如何在 Python 3 中保存这个字节流,以便稍后可以在 Pandas 中打开它:

 read_csv('foo.csv',sep='\x01')

我尝试过:

  with open('foo.csv', 'w') as f:
f.write(data.decode(encoding='ascii'))

没有运气。如果我稍后尝试使用以下命令打开文件:

pd.read_csv('my_file', sep='\x01')

我得到一个包含多行和 1 列的数据框(即没有字段分割)。

更新

with open('my_file', 'wb') as f:
f.write(data)

然后:

pd.read_csv('my_file', sep='\x01')

我还得到了一个包含多行和 1 列的数据框(即没有字段分割)。

最佳答案

如果需要写入二进制字符/字节,还需要以二进制模式打开,即open('foo.csv', 'wb'),然后只写入数据(因为它已经是 bytes 类型了)。

# assuming isinstance(data, bytes) is True
with open('foo.csv', 'wb') as f:
f.write(data)

假设文件写入正确,您应该能够像这样读取它。不管怎样,为了你的缘故,我现在安装了 pandas,如果我尝试做你想做的事情,就会发生以下情况:

>>> with open('dummy.csv', 'wb') as f:
... f.write(b'foo\x01302.0\x011407339259000\nbar\x01206.0\x011407339259230\n')
...
48
>>> import pandas
>>> foo = pandas.read_csv('dummy.csv', sep='\x01')
>>> foo.keys()
Index(['foo', '302.0', '1407339259000'], dtype='object')
>>> foo.values
array([['bar', 206.0, 1407339259230]], dtype=object)

请注意,所有值都是您所期望的。

关于python - 将包含\x01 字符的字符串保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254847/

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