用Python编写文件的一部分

2024-06-15 20:36:16 发布

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

我有一个文件,其中包含从1到100重复的这种结构模型的信息:

MODEL       <Number>
.....
.....
.....
ENDMDL

每个模型都有一个编号。模型信息以MODEL <Number>行开始,以ENDMDL行结束

我只想将一个型号写入一个新文件


Tags: 文件模型信息numbermodel结构编号型号
1条回答
网友
1楼 · 发布于 2024-06-15 20:36:16

此代码将按以下方式提取所有模型

  • 读取整个文件
  • 使用regex将modeltext和modelnumber提取为元组
  • 为生成的元组创建字典条目
  • 将所有模型作为单个文件写入

你可以调整它只写一个数字

编写演示数据:

code = """MODEL       0
..0...
..0...
..0...
ENDMDL
MODEL       1
..1...
..1..
..1...
ENDMDL
"""

with open("f.txt" , "w") as w:
    w.write(code)

读取和分析演示数据:

import re

with open("f.txt", "r") as r:
    allModels = r.read()

allM = {}

# the regex captures as few as possible things between 
# MODEL and ENDMDL and captures the first number after 
# MODEL as your modelnumber.

for m in re.findall(r"(MODEL\s+(\d+).+?ENDMDL)",allModels,re.DOTALL):
    # create a dictionary entry for each found match-tuple
    allM[int(m[1])] = m[0]

print(allM)

for k in allM:
    with open("model_{}.txt".format(k),"w") as w:
        w.write(allM[k])

输出(dict):

{0: 'MODEL       0\n..0...\n..0...\n..0...\nENDMDL', 
 1: 'MODEL       1\n..1...\n..1..\n..1...\nENDMDL'}

相关问题 更多 >