读取可能只有一行或一列的 table (python)
reading a table that might have a single row or column (python)
我正在使用 genfromtxt 从 csv 文件中提取 table:
myTable = numpy.genfromtxt("myFile.csv", skip_header=1, delimiter=",", dtype=float)
我事先不知道 table 的大小,它可能包含单行或单列。我希望得到一个二维数组。这适用于大多数情况,但如果只有一行或一列,我会得到一个一维数组,这会扰乱我的执行。
一个相关的问题是包含“1,2”的文件和包含“1\n2”的文件会产生相同的输出 [1 2],而我希望第一个的输出是是 [[1 2]] 和第二个 [[1][2]]
有没有办法在 genfromtxt 中指示预期输出的维度?或者,是否有不同的实用程序用于从文件中读取 tables?
使用 readlines() 逐行(行)进入文件。
并在每一行中,使用 column=len(row.split(';')) 查找每行的列数。
for row in file.readlines():
column=len(row.split(';'))
现在您可以提取您想要的任何类型的信息
这是我编写的代码,可能会对您有所帮助我也是新手,所以您可能会找到比这个更好的解决方案
import csv
datafile = open(r'C:\Users\Admin\Downloads\a.csv', 'r')
datareader = csv.reader(datafile, delimiter=';')
data = []
for row in datareader:
print(row)
for x in row :
try:
ls = x.split(",")
data.append(ls)
except:
data.append(x)
print (data)
您可以使用 raise
语句将文件加载包装在 try..except
块中,这样当加载的 table 与所需尺寸不匹配时,您会收到一条错误消息。
import numpy
try:
myTable = numpy.genfromtxt(("myFile.csv", skip_header=1, delimiter=",", dtype=float)
if myTable.shape[0] == 1 or myTable.shape[1] == 1:
raise IndexError("The imported table has 2 or more dimensions!")
except:
raise
这样,每当您尝试将 table 加载到小于 2 维的内存中时,您都会得到一个 IndexError
,其中包含您在 raise
语句中指定的错误消息.现在您可以将该块包装到一个函数中,并尝试从该函数中加载 table 。此外,我建议创建一个 pandas 数据框,因为它具有多功能且易于操作数据的可能性。
我正在使用 genfromtxt 从 csv 文件中提取 table:
myTable = numpy.genfromtxt("myFile.csv", skip_header=1, delimiter=",", dtype=float)
我事先不知道 table 的大小,它可能包含单行或单列。我希望得到一个二维数组。这适用于大多数情况,但如果只有一行或一列,我会得到一个一维数组,这会扰乱我的执行。
一个相关的问题是包含“1,2”的文件和包含“1\n2”的文件会产生相同的输出 [1 2],而我希望第一个的输出是是 [[1 2]] 和第二个 [[1][2]]
有没有办法在 genfromtxt 中指示预期输出的维度?或者,是否有不同的实用程序用于从文件中读取 tables?
使用 readlines() 逐行(行)进入文件。 并在每一行中,使用 column=len(row.split(';')) 查找每行的列数。
for row in file.readlines():
column=len(row.split(';'))
现在您可以提取您想要的任何类型的信息
这是我编写的代码,可能会对您有所帮助我也是新手,所以您可能会找到比这个更好的解决方案
import csv
datafile = open(r'C:\Users\Admin\Downloads\a.csv', 'r')
datareader = csv.reader(datafile, delimiter=';')
data = []
for row in datareader:
print(row)
for x in row :
try:
ls = x.split(",")
data.append(ls)
except:
data.append(x)
print (data)
您可以使用 raise
语句将文件加载包装在 try..except
块中,这样当加载的 table 与所需尺寸不匹配时,您会收到一条错误消息。
import numpy
try:
myTable = numpy.genfromtxt(("myFile.csv", skip_header=1, delimiter=",", dtype=float)
if myTable.shape[0] == 1 or myTable.shape[1] == 1:
raise IndexError("The imported table has 2 or more dimensions!")
except:
raise
这样,每当您尝试将 table 加载到小于 2 维的内存中时,您都会得到一个 IndexError
,其中包含您在 raise
语句中指定的错误消息.现在您可以将该块包装到一个函数中,并尝试从该函数中加载 table 。此外,我建议创建一个 pandas 数据框,因为它具有多功能且易于操作数据的可能性。