使用Python识别缺少的文本序列项

使用Python识别缺少的文本序列项,python,python-2.x,Python,Python 2.x,我有一个地质数据集,包含钻孔、深度截距以及与哪个地质单元相交。一些地质单元交点尚未添加到数据集中,我想使用Python生成缺少交点的钻孔列表 我还想知道在序列中交叉点缺失的位置。理想的输出是显示“钻孔,缺少序列项”的文件。“单位”列中可以接受空值,因为并非每个“从到”间隔都是命名单位 在下面的数据集中,第二个孔在单元序列中缺少“红色SS”。它可能不在物理上存在——但对于我的用例,它需要以零厚度的形式存在于数据库中。输入文件都是csv文件 示例数据集可能如下所示(实际数据集约为15000行): 看

我有一个地质数据集,包含钻孔、深度截距以及与哪个地质单元相交。一些地质单元交点尚未添加到数据集中,我想使用Python生成缺少交点的钻孔列表

我还想知道在序列中交叉点缺失的位置。理想的输出是显示“钻孔,缺少序列项”的文件。“单位”列中可以接受空值,因为并非每个“从到”间隔都是命名单位

在下面的数据集中,第二个孔在单元序列中缺少“红色SS”。它可能不在物理上存在——但对于我的用例,它需要以零厚度的形式存在于数据库中。输入文件都是csv文件

示例数据集可能如下所示(实际数据集约为15000行):


看看这本书。CSV已经完成了识别哪些字段为空的工作,因此您已经有了很大的优势。

您在命名单元的字符串方面遇到了问题。 尝试将“for”更改为lile this:

钻孔、顶部、底部、材料、单位 孔A,0,5,砾石,“比尔的砾石”
HOLE-A,5,7,CLAY,“NULL”

如果将数据保存在一个名为“data”的文本文件中,扩展名为.txt,然后在数据文件所在的目录中运行以下代码,则可以找到所有具有NULL值的行:

data = open("data.txt").read()
dataRows = data.split("\n")
for row in dataRows:
  cells = row.split(",")
  for cell in cells:
    if cell == " <NULL>":
      print row
data=open(“data.txt”).read()
dataRows=data.split(“\n”)
对于dataRows中的行:
单元格=行分割(“,”)
对于单元中的单元:
如果单元格==“”:
打印行
使用您提供的示例数据从此代码中输出:

HOLE-A, 5, 7, CLAY, <NULL>
HOLE-A, 10, 15, CLAYSTONE, <NULL>
HOLE-B, 2, 4, CLAY, <NULL>
HOLE-B, 4, 11, SANDSTONE, <NULL>
HOLE-B, 11, 17, CLAYSTONE, <NULL>
A孔、5孔、7孔、粘土孔、,
A洞,10洞,15洞,粘土岩,
B孔,2孔,4孔,粘土,
B孔,4孔,11孔,砂岩,
B洞,11号,17号,粘土岩,

因此,您希望提取一个或多个单元格中具有“null”值的孔的名称?还是希望将单元格替换为“null”值和值“0”“谢谢你,杜海姆。我的问题写作显然不是最好的。我稍微修改了一下,以澄清我想要的结果。作为对您方便答案的回应,识别null将没有帮助,因为null在UNIT列中是一个有效值。如果我有这个能力,我会选择所有非空值,按深度排序,然后与序列文件进行比较。任何缺少或不符合顺序的内容->转储到输出文件。这有点帮助,但我还是有点困惑。第4行中的值是否应等于红色SS或基底?您只是想确保最后一列中的值遵循特定的顺序吗?你能不能再详细说明一下你想要什么,这样我们就可以帮你了?谢谢。第4行中的空值可以是空值,也可以是序列列表中的一个值(红色SS或基底)。关键是单位值必须按照顺序列表中定义的正确顺序出现。这只是一个示例数据集-序列列表运行到大约50行。对于我想要的干净数据集-每个钻孔必须包含序列列表中的所有项目。目前它们没有,我需要确定缺少哪个孔和哪个序列项。重新阅读您的注释-是的,我试图确保最后一列中的值遵循序列列表定义的特定顺序。我想知道每个钻孔中缺失的序列项目。有趣。你怎么知道第2行的最后一列是红色SS而不是比尔的砾石?B洞的第三排是比尔的砾石、红色SS还是地下室?您如何知道要指定哪个?
data = open("data.txt").read()
dataRows = data.split("\n")
for row in dataRows:
  cells = row.split(",")
  for cell in cells:
    if cell == " <NULL>":
      print row
HOLE-A, 5, 7, CLAY, <NULL>
HOLE-A, 10, 15, CLAYSTONE, <NULL>
HOLE-B, 2, 4, CLAY, <NULL>
HOLE-B, 4, 11, SANDSTONE, <NULL>
HOLE-B, 11, 17, CLAYSTONE, <NULL>