我正在使用这一行读取 txt 文件中的部分行,跳过页眉和页脚。
np_data= np.loadtxt(file, delimiter= "\t", skiprows=12, max_rows= 1024)
问题在于页脚中有这个字符:∞,导致出现如下错误
UnicodeDecodeError:“utf-8”编解码器无法解码位置 4729 中的字节 0xb0:无效的起始字节
有没有办法跳过该字符或行?对我来说,skiprows 和 max_rows 的组合似乎不起作用。 谢谢你
有办法跳过那行(...)吗?
numpy.loadtxt
第一个参数可能是
要读取的文件、文件名、列表或生成器。如果文件扩展名 是.gz或.bz2,首先解压该文件。请注意,发电机 必须返回字节或字符串。列表中的字符串或由 发电机被视为线路。
因此,您可以封装文件句柄来跳过您不想要的行,请考虑以下简单示例,让
file.csv
内容为
1,2,3
4,∞,6
7,8,9
然后
import numpy as np
with open("file.csv","rb") as f:
arr = np.loadtxt(filter(lambda x:b"\xe2\x88\x9e" not in x,f), delimiter=",")
print(arr)
提供输出
[[1. 2. 3.]
[7. 8. 9.]]
说明:我以二进制模式打开
file.csv
,然后使用 filter
从文件句柄 f
中选择不包含字节序列 \xe2\x88\x9e
(在 Unicode 中为 Infini)的行