如何修改特定分隔符之间的文本(在文件中)? [关闭]
Posted
技术标签:
【中文标题】如何修改特定分隔符之间的文本(在文件中)? [关闭]【英文标题】:How to modify text (in files) that is between specific delimiters? [closed] 【发布时间】:2022-01-22 04:32:41 【问题描述】:我有一个类似的文件
some text that must stay as it
<<<<< START of a delimiter of some kind I am free to choose >>>>>>
some text that will be replaced by my own text
<<<<< END of my delimiter >>>>>
some more text that must stay as it
在开始编写我自己的脚本来修改文件中特定分隔符之间的文本(保持分隔符就位)之前,我想确保这不是已经通过模板或其他更多 Pythonic 解决方案解决的问题。
“不,你必须自己写”之类的答案是一个很好的答案——我只是不想跳过我目前没有看到的东西。
【问题讨论】:
最好在您遇到无法解决的特定问题、寻求指导的一般性问题不符合 SO 的目标时使用此站点。 @itprorh66 这个网站也适用于有具体问题并希望在解决之前得到指导的人。你知道我的问题的解决方案吗?如果是的话,我会很高兴听到它。这包括“你必须自己写”。你总是先建立一些东西然后问吗?只是被告知你重新发明了***? 要求有关问题方法的一般指导的问题通常过于宽泛,不适合本网站。人们有自己解决问题的方法,因此不可能有正确的答案。 @itprorh66 感谢您的宝贵意见,它确实有助于解决问题。 我认为您可以使用re.sub
和一些正则表达式“魔术”来做到这一点,但是,我不太确定内存效率(除非您分块处理文件(这也可以拆分一些分隔符之间的部分文本,可能使re.sub
失败或工作不正常))
【参考方案1】:
mylines
看起来很奇怪,因为在我的情况下,这部分将被生成。
mylines = [
"hello\n",
"world\n"
]
delim_start = "# start of my section"
delim_end = "# end of my section"
with open("data.txt") as f:
lines = iter(f.readlines())
new_file = []
for line in lines:
if line.startswith(delim_start):
new_file.append(f"delim_start\n")
while not next(lines).startswith(delim_end):
pass
else:
new_file.append(''.join(mylines))
new_file.append(f"delim_end\n")
else:
new_file.append(line)
with open("data.txt", "w") as f:
f.write(''.join(new_file))
【讨论】:
以上是关于如何修改特定分隔符之间的文本(在文件中)? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在Linux中对齐包含不同分隔符的文本文件的不同部分? [关闭]