我仍然是Python的初学者。我正在读取从软件生成的标签分隔文本文件,以筛选出一组值。但是生成的值都是类似于IEEE浮点格式的格式。(例如: 1.5656565656E+02)。
我的选项卡分隔文件是这样的(实际上它是250列。大致是这样的)
Time [s] Offset_Angle observability_Analysis
0.00E+00 0.89040261167028E+00 0.00000000000000E+00
4.32E+02 0.21319658757004E+00 0.00000000000000E+00
8.64E+02 0.26803683992125E+00 0.00000000000000E+00
1.30E+03 2.67379011780784E+02 1.00000000000000E+00
1.73E+03 2.89704767087971E+02 1.00000000000000E+00
2.16E+03 2.93302157473406E+02 1.00000000000000E+00它的目的是过滤那些将它们的Offset_Angle值的observability_Analysis作为1.0000000000000E+00的值,但到目前为止,我正在尝试打印行号,行号以observability_Analysis作为1.0000000000000E+00。
我试过的代码是这样的
with open('E:\\trialpy\\textfile.txt') as f:
reader = csv.reader(f, delimiter="\t")
d = list(reader)
for ind in range(len(d)):
if d[ind][2] == "1.00000000000000E+00":
print ind第一组代码工作正常。印鉴是空的。它不提供任何价值。请帮我处理这个。如果这个问题很愚蠢的话,我很抱歉。在这个地方呆了一段时间。有什么办法解决这个问题吗?还是我得换个潘达斯?
谢谢。
发布于 2015-10-28 10:42:09
问题似乎是csv读取器无法正确处理这些数据,因此每一行都作为一个字符串保存到一个列表(row)中.
with open('data.csv', 'r') as f1:
r = csv.reader(f1, delimiter='\t')
next(r, None) # skip first line
for row in r:
thirdc = row[0].split()[2]
if float(thirdc) > 0.0:
print(thirdc)
1.00000000000000E+00
1.00000000000000E+00
1.00000000000000E+00https://stackoverflow.com/questions/33388610
复制相似问题