np.genfromtxt 多个分隔符?

Mih*_*iha 3 python arrays numpy typeerror genfromtxt

我的文件如下所示:

1497484825;34425;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14
1497484837;34476;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14;-4,28,-14
Run Code Online (Sandbox Code Playgroud)

我想使用 np.genfromtxt 将其导入 numpy 数组。最大的问题是它有“;” 和 ',' 作为分隔符。我的尝试:

import numpy as np
import io

s = io.StringIO(open('2e70dfa1.csv').read().replace(';',','))

data = np.genfromtxt(s,dtype=int,delimiter=',')
Run Code Online (Sandbox Code Playgroud)

我收到错误:

类型错误:无法将“bytes”对象隐式转换为 str

怎么解决呢?我也愿意接受全新(更好)的想法。

jua*_*aga 5

根据文档

参数
fname:文件、str、pathlib.Path、str 列表、生成器 要读取的文件、文件名、列表或生成器。如果文件扩展名是gz或bz2,则首先解压缩文件。请注意,生成器必须返回 Python 3k 中的字节字符串。列表中的字符串或生成器生成的字符串被视为行。

给它一个生成器可能更容易、更有效,只要记住它必须生成字节字符串:

>>> with open('2e70dfa1.csv', 'rb') as f:
...     clean_lines = (line.replace(b';',b',') for line in f)
...     data = np.genfromtxt(clean_lines, dtype=int, delimiter=',')
...
>>> data
array([[1497484825,      34425,         -4,         28,        -14,
                -4,         28,        -14,         -4,         28,
               -14,         -4,         28,        -14,         -4,
                28,        -14,         -4,         28,        -14],
       [1497484837,      34476,         -4,         28,        -14,
                -4,         28,        -14,         -4,         28,
               -14,         -4,         28,        -14,         -4,
                28,        -14,         -4,         28,        -14]])
Run Code Online (Sandbox Code Playgroud)