Python 检测 Txt 文件中的缺失行

Posted

技术标签:

【中文标题】Python 检测 Txt 文件中的缺失行【英文标题】:Python Detect Missing Line in a Txt File 【发布时间】:2012-07-16 06:55:11 【问题描述】:

假设一个 txt 文件由以下几行组成:

A
  1
  2
  3
B 
  1
  2
  3
C
  1
  3

很明显,txt 文件中的 C 中缺少 2。检测丢失的 2 并输出它的想法是什么?我需要逐行读取txt文件。

谢谢!

【问题讨论】:

filehandle.readline函数可以帮到你 “很明显,C 中缺少 2”这样的语句对人类来说比对 Python 解释器更有意义。这些线代表什么,为什么“清楚”特定部分缺少值? 好的,我尝试将值 1、2 和 3 添加到列表中。每当该行读取新字母(例如 A、B 或 C)时,该列表将被重置。我的想法是,如果当前在字母 C 中附加列表的 len 仅为 2,那么 C 中缺少一个数字。 基本上我想检测每个字母表中缺失的数字。如果从 1 到 5 有 5 个数字,并且说字母 D 只有 1、2、3、4。然后 D 中缺少数字 5。我需要这样做的想法。嗯... @Marius 文本文件就是这样给出的。 C部分缺少数字2。 【参考方案1】:

可能你想要这样的东西:

line_sets = []
file_names = ['a', 'b', 'c']

# read content of files, if you need to remember file names, use
# dict instead of list
for file_name in file_names:
    with open(file_name, 'rb') as f:
        line_sets.append(set(f.readlines()))

# find missing lines
missing_lines = set()
for first_set, second_set in itertools.combinations(line_sets, 2):
    missing_lines.add(first_set - second_set)
print 'Missing lines: %s' % missing_lines

【讨论】:

【参考方案2】:

好的,我认为你们大多数人都不清楚这个问题。无论如何,这是我的解决方案:

我将每个部分的值附加到 for 循环内的列表中。例如,在 A 节中,列表将包含 1,2 和 3。C 节中列表的 len 只有 2。因此,我们知道 C 节中缺少一个值。从这里,我们可以打印出C节。对造成的误解深表歉意。这个问题正式关闭。无论如何感谢您的意见!

【讨论】:

以上是关于Python 检测 Txt 文件中的缺失行的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 .txt 文件中的关键字在 Python 中创建列表?

Python实验:消除缺失的文件编号

将剪贴板输出到OSX命令行中的文件

读取文件并从行中删除 \n 和空格 [重复]

如何在同一命令行中的文件上执行 python 脚本? [复制]

如何将标准输入重定向到 Windows 命令行中的文件?