删除以非数字数据开头的行,并使用Python在特定文本格式之前插入文本

2024-04-25 02:14:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有几千行格式的文件

unwantedtext1 
unwantedtext1
50779       1   52476   52475   52481   52485
50780       1   52485   52481   52480   52484
.....
.....
unwantedText2
50614  1.8837812e+001  7.0057003e+000  1.6900000e+002
52200  4.6960466e+001 -2.5497744e+000  1.4950614e+002
.....
.....
unwantedtext3
unwantedtext3

在下一步中,我必须在文件的开头添加文本wantedText1,当字段2变成实数而不再是整数时,添加文本wantedText2。所以输出是

wantedtext1 
wantedtext1
50779       1   52476   52475   52481   52485
50780       1   52485   52481   52480   52484
.....
.....
wantedText2
50614  1.8837812e+001  7.0057003e+000  1.6900000e+002
52200  4.6960466e+001 -2.5497744e+000  1.4950614e+002
.....
.....
wantedtext3
wantedtext3

这些想要的文本可以直接回应,也可以从其他人那里输入。数据以空格分隔,而不是制表符分隔。你知道吗

对使用python有什么建议吗?你知道吗


Tags: 文件数据文本格式整数制表符空格实数
1条回答
网友
1楼 · 发布于 2024-04-25 02:14:17

设置一个标志来反映我们是否看到了实数。你知道吗

seen_real_number = False
with open('file_name') as in_file, open('output.txt','w') as out_file:
    out_file.write('wantedtext1\nwantedtext1\n')
    for line in in_file:
        if not line.strip():
            out_file.write(line)
            continue
        fields = line.split()

如果行只有一个字段或第一个字段是非数字,请跳过该行。你知道吗

        if len(fields) == 1 or not fields[0].isdigit():
            out_file.write(line)
            continue

这里,行有多个字段,第一个字段是数字。为了检查第二个字段是否是实数,我调用int,如果第二个字段是实数,它将抛出一个异常。你知道吗

        try:
            int(fields[1])
        except ValueError:  

在这里,我们看到了一个真实的数字。切换seen_real_number并写入“wantedtext2”。你知道吗

            if not seen_real_number:
                out_file.write('wantedtext2\n')
                seen_real_number = True
            out_file.write(line)
        else:

现在没有例外,第二个字段是非实数字段。切换seen_real_number标志。因为如果我们再次遇到一个实数,我们可以再次写“wantedtext2”。你知道吗

            if seen_real_number:
                seen_real_number = False
            out_file.write(line)
    out_file.write('wantedtext3\nwantedtext3\n')  

我不会修改读取行,这样输出文件应该具有与输入文件相同的格式。你知道吗

相关问题 更多 >