首页 > 解决方案 > 如何删除文件中不同样式的行(一切都是str格式)?

问题描述

我有一个使用 python 打开的文档:

with open('my_file.txt', 'r') as fin:
    myfile = fin.readlines()

在 myfile 我有这样的行:

     1HEJJ 1 3.904 5.512 1.259\n
     2HEE CJJ 2 4.199 5.292 1.353\n
     2LLO SJJ 3 4.367 5.234 1.445\n
     3LLO JJ 4 4.041 4.969 1.220\n
   6.50000 6.50000 6.50000\n
 这是其他标题。\n
 3\n
     1GOO HSC 1 4.088 4.816 1.041\n
     1DDD H 2 9.018 0.828 7.094\n
     2DDD H 3 19.018 0.828 7.094\n

我需要保留的唯一行是这些:

     1HEJJ 1 3.904 5.512 1.259\n
     2HEE CJJ 2 4.199 5.292 1.353\n
     2LLO SJJ 3 4.367 5.234 1.445\n
     3LLO JJ 4 4.041 4.969 1.220\n
     1GOO HSC 1 4.088 4.816 1.041\n
     1DDD H 2 9.018 0.828 7.094\n
     2DDD H 3 19.018 0.828 7.094\n

换句话说,具有来自信息的信息的行:

myfile[line][:44]我必须保留。

其他行(较短的行)我必须删除。

关于如何做到这一点的任何想法?

标签: pythonpython-3.x

解决方案


如果必须删除的行总是少于 44 个字符,而有效的行总是至少有 44 个(就像你说的那样),你可以这样做:

with open('input.txt', 'r') as infile:
    with open('output.txt', 'w') as outfile:
        for line in infile:
            if len(line) >= 44:
                outfile.write(line)

推荐阅读