gpt4 book ai didi

python - 使用 python 重新排列文本文件中的数据时遇到麻烦

转载 作者:行者123 更新时间:2023-12-01 04:51:56 27 4
gpt4 key购买 nike

我正在编写一个可以做很多奇怪事情的代码。其中奇怪的事情之一是它生成一个名为 combined.glm 的文件,该文件的内容如下所示:

object line_space {
content;
content;
}

object line_conf {
content;
content;
}
#2 more line_conf objects

object line_ug {
content;
content;
}
#70 more line_ug

object nod_l {
content;
content;
}
#65 more nod_l

我想将所有 nod_l 部分移至 line_ug 部分之上,即紧接在 line_conf 部分之后。我尝试做的方式是这样的:

...
noding=open("combined.glm",'r').readlines()
combined_order=open("combined_order.glm",'w')
for ko,comblineo in enumerate(noding):
if 'object line_space {' in comblineo:
combined_order.writelines(noding[ko:ko+5])
for kt,comblinet in enumerate(noding):
if 'object line_conf {' in comblinet:
combined_order.writelines(noding[kt:kt+5])
for kr,combliner in enumerate(noding):
if 'object nod_l {' in combliner:
combined_order.writelines(noding[kr:kr+5])
for kf,comblinef in enumerate(noding):
if 'object line_ug' in comblinef:
combined_order.writelines(noding[kf:kf+5])
...

但它不起作用(在我看来,这是有道理的)。我正确复制了大约 28 个 nod_l,然后是许多 null 字符和大约 16 个 line_ug,然后是另一个 nod_l 并中断。我不确定发生了什么事。

最佳答案

这很脏,但它有效。

import re

old = open("combined.glm").read()

space = re.compile("object line_space {.*?}",re.DOTALL + re.MULTILINE)
conf = re.compile("object line_conf {.*?}",re.DOTALL + re.MULTILINE)
ug = re.compile("object line_ug {.*?}",re.DOTALL + re.MULTILINE)
nod = re.compile("object nod_l {.*?}",re.DOTALL + re.MULTILINE)

all_space = space.findall(old)
all_conf = conf.findall(old)
all_ug = ug.findall(old)
all_nod = nod.findall(old)

with open("combined_order.glm","w") as f:
for thing in all_space:
f.write(thing + "\n\n")
for thing in all_conf:
f.write(thing + "\n\n")
for thing in all_nod:
f.write(thing + "\n\n")
for thing in all_ug:
f.write(thing + "\n\n")

关于python - 使用 python 重新排列文本文件中的数据时遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com