gpt4 book ai didi

python - 如何识别缺失索引

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:52 31 4
gpt4 key购买 nike

我有一个包含数百万个索引点的文本文件,这些索引点都被解释为字符串并以制表符分隔。但是,一些指标点可能会丢失。这是我的文本文件的示例:

1       0       4         0d 07:00:37.0400009155273   
2 0 4 0d 07:00:37.0400009155273
3 0 4 0d 07:00:37.0400009155273
5 0 4 0d 07:00:37.0400009155273
7 0 4 0d 07:00:37.0400009155273
9 0 4 0d 07:00:37.0400009155273

请注意缺少第 4、6 和 8 行。我的目标是创建一个可以解析文本文件的函数,识别可能缺失的索引点并返回一个包含所有缺失索引点(如果有)的列表,或者不返回任何内容。

我在 Spyder IDE Windows10 操作系统中使用 Python 3.7。我对 Python 和 Stackoverflow 比较陌生。

这就是我到目前为止所得到的。这适用于 ID 1 缺失索引,但如果存在多个缺失索引点,则会失败。

错误从第一行 else 之后开始。我不确定如何使用 for 循环的索引 (0, 1, 2, 3...) 跟踪文档中观察到的索引 (1, 2, 3, 5...) 作为缺失的索引点随着时间的推移复合.

请注意,文本文档的前 4 行包含我在解析期间忽略的标题信息,这就是为什么 data = f.readlines()[4:]

  def check_sorted_file(fileName):
missing_idx = []
count = 1
with open(fileName, 'r') as f:
data = f.readlines()[4:]
for x, line in enumerate(data):
idx = int(line.split()[0])
if idx == (count + x):
pass
else:
missing_idx.append(count + x)
count += 1
if missing_idx != []:
print('\nThe following idicie(s) are missing: ')
print(*missing_idx, sep=", ")
else:
print('\nAll indices are accounted for. ')
return missing_idx

...

感谢所有帮助!

最佳答案

另一个答案为您提供了更好的整体解决方案,但我只想帮助指导您给定的解决方案朝正确的方向发展,以便您了解如何改变您的解决方案:

def check_sorted_file(fileName):
missing_idx = []
last_index = 0
with open(fileName, 'r') as f:
data = f.readlines()[4:]

for line in data:
idx = int(line.split()[0])
if idx == last_index+1:
pass
else:
missing_idx.extend(list(range(last_index+1, idx)))
last_index = idx

if missing_idx:
print('\nThe following idicie(s) are missing: ')
print(*missing_idx, sep=", ")
else:
print('\nAll indices are accounted for. ')
return missing_idx

因此,无需使用枚举,我们将使用传入索引作为我们所处位置的指南。

为了解决多个缺失问题,我们使用 range 获取最后一个索引和当前索引之间的所有数字,并使用新的一组数字扩展我们的列表。

关于python - 如何识别缺失索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140037/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com