【问题标题】:reading in files in python to find indexes of specific items在 python 中读取文件以查找特定项目的索引
【发布时间】:2015-09-10 17:54:17
【问题描述】:

我有一个值的数据文件,其中一些值是在以后添加的,格式为:999999.0,所以我可以挑选出来进行更改。

我使用的测试数据是:

0.0
0.0
0.0
0.0
999999.0
999999.0
999999.0
999999.0
999999.0
0.0
0.0
0.0
0.0
0.0

我需要找到999999.0条目的索引并且一直在使用:

for i, j in enumerate(testdata):
    if j == 999999.0:
        print i

当我以列表的形式手动输入数据时有效:

testdata = [0.0, 0.0, 0.0, 0.0, 999999.0, 999999.0, 999999.0, 999999.0, 999999.0, 0.0, 0.0, 0.0, 0.0, 0.0]

但是当我从文件中读取数据时:

data = open("C: test.txt")
testdata = data.readlines()

这行不通! (我没有收到任何错误,只是没有打印)

我怎样才能读入数据来找到索引,或者有没有其他方法可以在不改变读入的情况下找到索引?

【问题讨论】:

  • 请注意,您手动输入的数据包含float 对象,而您从文件中read 的数据将是str 对象...

标签: python list indexing


【解决方案1】:

当您读取文件时,其内容会以字符串列表的形式返回。如果您想这样对待它们,则需要将字符串转换为数字。

for i, j in enumerate(testdata):
    if float(j) == 999999.0:
        print i

会起作用的。

【讨论】:

  • 计算中使用的(伪)“float”类型本质上是不准确的,因此最好避免对浮点数进行相等性测试。在这种情况下,您可以更简单地将原始值保留为字符串并针对 "999999.0" 进行测试。
【解决方案2】:

数据以字符串形式读取。要么做:

if j=='999999.0':

if float(j)==999999.0:

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2020-09-15
    • 2016-12-23
    相关资源
    最近更新 更多