【问题标题】:How to remove lines in a text file containing three columns based on a number in the third column?如何根据第三列中的数字删除包含三列的文本文件中的行?
【发布时间】:2016-07-27 04:01:19
【问题描述】:

我是编码这类问题的新手,我愿意接受最简单的工具或解决方案。我知道如何使用的工具似乎都无法打开该文件。我宁愿避免使用 excel,因为我想最终批处理该过程。我已经尝试了一段时间,但无法自动完成这个简单的任务。我确信有一个简单的解决方案。

我只是想找到column 3 下方__ 包含3 以外的内容的实例,其中它包含3 以外的内容删除该行。

这是一个包含在扩展名不是.txt的文本文件中的数据示例:

 0.0004882812500000 136
 0.000000      5850  __
 4.674316   1307778   3
 9.699219   2707354   3
14.932617   4165002   3
20.051270   5590690   3
24.809082   6915874   3
24.815430   6917642   2
29.786621   8302258   3
35.123535   9788738   3
35.123535   9788738   3
40.535645  11296162   1

我需要删除第三列中不包含 3 的行。我是编程新手,所以我愿意接受最简单工具的建议。我尝试过 Python,但我的知识太有限了。
我还尝试了带有搜索和替换功能的 Notepad++,并添加了 Python 插件,但我不知道从哪里开始。

抱歉,如果我发布了这个错误。

【问题讨论】:

  • 它没有解析超过 __ 。我刚刚注意到我的一个测试文件在 __ 下面是空的。让我删除我的问题并在我再次卡住时回来。道歉。

标签: python text notepad++ batch-processing


【解决方案1】:

尚不清楚您是否需要脚本化答案来重新运行该过程,或者是否可以使用手动过程来进行操作(重新阅读您的帖子,看看您是否希望最终编写此脚本out...regex 仍然应该为您提供一个起点,即使您经过 notepad++),但这是一个使用 Notepad++ 的快速而肮脏的场景,假设您的示例数据具有代表性(第 3 列中的 2 位数字将采用另一个元素在正则表达式中):

  1. 在显示数据的记事本++ 中,执行“标记”(ctrl-H,然后按“标记”选项卡)
  2. 选择搜索模式“正则表达式”并选中“书签行”
  3. 使用以下正则表达式:^\s{0,1}(\S+\s+){2}[012456789]$
  4. 点击“全部标记”
  5. 菜单“搜索”/书签/剪切带书签的行

正则表达式含义:

  • 从行首(插入符号)
  • 匹配零个或一个空格字符
  • 然后 (2) 一个或多个非空格字符后跟一个或多个空格字符的实例
  • 然后是任何不是“3”的数字
  • 并锚定到行尾(使用 $),这可能有点矫枉过正:)

希望这会有所帮助。

【讨论】:

  • 搜索“查找内容:”字段中使用的正则表达式导致 0 个匹配项。
  • 嗯...我在将问题中发布的示例数据抓取到 NP++ 后实际测试了解决方案。您确定搜索模式设置为“正则表达式”吗?如果是这样,如果您从这个问题中抓取值,您是否会得到相同的响应(认为文件中可能有其他字符可能没有进入此处的示例数据)?
【解决方案2】:

如果您想在 python 中执行此操作,这里是一个起点:

linesWith3 = []  # Store lines with 3 in last column
with open("file.txt", "r") as f:  # Open file
    for line in f.readlines():
         cols = line.split()  # Split into array of columns
         if "3" in cols[2]:
              linesWith3.append(line)  # Store line
with open("file2.txt", "w") as f:  # Write array to file
    for line in linesWith3:
        f.write(line+'\n')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2022-07-08
    • 1970-01-01
    相关资源
    最近更新 更多