我有一个来自仪器的数据文件,以CSV格式输出。读取文件和相应的列没有问题,但是,由于检测方法略有变化,数据文件已更改,我不知道如何更改我的代码以便仍然读取文件。
f = open('Rotator_050816.dat')
lines = f.readlines()
i = 0
while (lines[i]<>"[Data]\n"):
i+=1
i = i + 2
Temp = []; Field = []; Resistance1 = []; Resistance2 = [];
while(i<len(lines)):
data = lines[i].split(",")
Temp.append(float(data[3])
Field.append(float(data[4])
Resistance1.append(float[12])
Resistance2.append(float[13])
i+=1
Temp = np.array(Temp)
Field_T = np.array(Field)/10000.
Resistance1 = np.array(Resistance1)
Excitation1 = np.array(Excitation1)
这是以前使用的MWE。如果CSV文件没有空白条目,则没有问题,但是,如果有空白条目,则会出现问题,因为len(Resistance1)≠len(Temp),因此无法正确绘制它们。所以我的数据文件现在看起来像这样:
所以我需要添加一行代码,如果Res的行可以读取。 Ch1或Res。 Ch2为空,然后在追加到最终数据集之前跳过所有变量的整行。这样len(Resistance1)= len(Temp)和每个Res。 Ch1测量匹配到合适的温度。
答案 0 :(得分:1)
1)以只读模式打开文件并获取所有行
lines_in_my_file = []
with open("my_file.csv", "r") as my_file:
lines_in_my_file = my_file.readlines()
2)再次打开文件,这次是写入模式,并将所有非空白行写入文件:
with open("my_file.csv", "r") as my_file:
for line in lines_in_my_file:
if line.strip().strip(",") != ""
my_file.write(line)
请注意,这将删除由空格,制表符或逗号组成的任何行。所以看起来像这样的行:
,,,, (this line has only commas)
(this line has only spaces)
\n (this line is just a newline character)
...将被删除。
答案 1 :(得分:1)
这是我实施的工作解决方案:
while (i<len(lines)):
data = lines[i].split(",")
if float(data[4]) >30000 and float(data[4]) <50000:
Temp_II.append(float(data[3])) #As K
Field_II.append(float(data[4])) #As Oe
Position_II.append(float(data[5])) #As Degree
#loop for Resistivity1 column cleanup
if data[12]!= '':
Resistivity1_II.append(float(data[12]))
Temp1_II.append(float(data[3]))
#loop for Resistivity2 column cleanup
if data[13]!= '':
Resistivity2_II.append(float(data[13]))
Temp2_II.append(float(data[3]))
i+=1
基本上,这会将Resistivity1条目与相应的Temperature条目配对,而对于Resistivity2则相同。