【发布时间】:2019-05-14 23:49:52
【问题描述】:
我有一个包含数百万个索引点的文本文件,这些索引点都被解释为字符串并且是制表符分隔的。但是,可能会丢失一些索引点。这是我的文本文件的示例:
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
...
感谢您的帮助!
【问题讨论】:
-
您是否可以使用库,或者您需要/更喜欢纯 Python?
-
理想情况下,我更喜欢纯 Python。但是,如果有使用库的更优雅的解决方案,我也可以。 @ClarenceLeung
标签: python python-3.x indexing