从文本文件中提取文本并以其他形式写入

2024-04-24 03:19:31 发布

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

嗨,我正在尝试从程序生成的文件中提取一些文本行,并使用python以不同的格式写入另一个文本文件。在

以下是我目前所掌握的情况:

import os
import glob



path="D:\Programming\Python\Examples\Home\GainWizard\MassLynx\VxWorks\TargetRegistryFiles"
os.chdir(path)
print os.getcwd()
print os.listdir(path)


filelist = os.listdir(os.getcwd())
filelist = filter(lambda x: not os.path.isdir(x), filelist)
newest = max(filelist, key=lambda x: os.stat(x).st_mtime)

print newest
f = open(newest,'r')

data = f.readlines()
print data

这会将所有文本添加到列表中

我所拥有的是

^{pr2}$

我需要的是

START_TARGET_REGISTRY
Detector Gain Negative:a,1.087668e-021
Detector Gain Negative:b,8.536190
Detector Gain Negative:High Gain,392.233021 
Detector Gain Negative:Low Gain,76.782164
Detector Gain Postitve:a,4.061385e-021 
Detector Gain Postitve:b,8.398445
Detector Gain Postitve:High Gain,610.368775
Detector Gain Postitve:Low Gain,122.669833
END_TARGET_REGISTRY

谢谢


Tags: pathlambda文本importdataosdetectorlistdir
1条回答
网友
1楼 · 发布于 2024-04-24 03:19:31

有些事情还不太清楚,比如是否需要更多的参数而不仅仅是“检测器增益”参数,还是数字的来源(因为它们不会出现在示例中)。在

但是,这可能会让您到达需要的位置:

from collections import OrderedDict

D = OrderedDict()
for field in data.split(','):    
    if ':' in field:
        k = field
    else:
        D[k]= field.strip()

with open(r"C:\temp\detector_gain.txt", 'w') as outfile:
    print("START_TARGET_REGISTRY", file=outfile)
    for k, v in D.items():
        if "Detector Gain" in k:
           print(k, v, sep=',', file=outfile)
    print("END_TARGET_REGISTRY", file=outfile)

由于数据的格式似乎是CATEGORY_1:KEY_1,VALUE_1,CATEGORY_2:KEY_2,VALUE_2...,所以我们用split方法将数据分解为每个逗号处的字段。在

然后我们遍历每个字段,寻找一个:字符,它告诉我们正在读取一个CATEGORY:KEY字段。在

一旦我们有了CATEGORY:KEY字段,我们就知道下一个字段将是关联的值。所以我们将其添加到Python字典中,它将键映射到值。{I在字典中选择了}字段的顺序。在

最后,我们通读我们构建的字典,寻找“检测器增益”字段。然后我们将它们打印到一个输出文件中—您可以看到我们如何用上下文管理器打开它进行编写。在

如果您使用的是python2,那么也要执行from __future__ import print_function。在

相关问题 更多 >