Python 如果每个区域内至少有5个连续行,如何在每个标题区域的末尾发布标题为[Name]2的新行?

Python 如果每个区域内至少有5个连续行,如何在每个标题区域的末尾发布标题为[Name]2的新行?,python,python-3.x,Python,Python 3.x,我想实现在每个*标题区域末尾发布一个包含*标题[Name]2的新行(其中至少有5个连续行包含1个)的最简单方法是通过一个变量来计算每个*标题区域内的连续行数 我不确定计数变量有什么问题(也许,在每个*标题区域之后,它确实必须重置) 例如: *Title Test sometext 1 1 1 1 anothertext 1 1 1 1 #Not expecting *Title Test2 on this line. whatever asdas 1 1 1 1 rthtr 1 1 1 1

我想实现在每个*标题区域末尾发布一个包含*标题[Name]2的新行(其中至少有5个连续行包含1个)的最简单方法是通过一个变量来计算每个*标题区域内的连续行数

我不确定计数变量有什么问题(也许,在每个*标题区域之后,它确实必须重置)

例如:

*Title Test
sometext 1 1 1 1
anothertext 1 1 1 1
#Not expecting *Title Test2 on this line.
whatever
asdas 1 1 1 1 
rthtr 1 1 1 1 
asdasf 1 1 1 1 
asfasf 1 1 1 1 
blabla 1 1 1 1 
#Expecting *Title Test2 on this line.
124124124
*Title Alpha
sfdiasas 1 1 1 1 
qwdqwqd 1 1 1 1
#Not expecting *Title Alpha2 on this line.
someothertexting
sdsdfds 1 1 1 1 
sdasda 1 1 1 1
egrwefw 1 1 1 1 
poeifwio 1 1 1 1
dkvnsjc 1 1 1 1 
kdnwwjkev 1 1 1 1
#Expecting *Title Alpha2 on this line.
#and so on for thousands of them.. 

谢谢大家!

当我们看到一个新的
*Title
行时,您在部分中添加了代码,但是当您位于当前行以
1
结尾的区域时,计数器当然应该增加。这是一个重构,它可以根据您的新需求稍微改变一些东西

transitions=dict()
注册计数=0
reg_end=-1
当前标题=无
打开(“test.txt”、“r”)作为测试文件:
content=testfile.readlines()
对于idx,枚举中的行(内容):
如果行.startswith('*Title'):
当前标题=line.rstrip('\n')+'2\n'
elif line.strip().endswith('1'):
注册计数+=1
reg_end=idx
elif reg_计数:
如果当前标题和注册计数>=5:
转换[reg_end]=当前标题
注册计数=0
如果当前标题和注册计数>=5:
转换[reg_end]=当前标题
以open(“test.txt”、“w”)作为输出:
对于idx,枚举中的行(内容):
输出。写入(行)
如果idx处于转换中:
output.write(转换[idx])
演示:


如果您想进一步开发此功能,请添加
print
语句,这些语句在每个部分中显示相关变量的值,以便您可以查看程序处理简单文件时发生的情况。我认为,在理解代码的工作原理之前,您无法对代码进行有意义的更改。

显示test.txt中的2或3行代码,以便我们有清晰的想法和调试。@Cyber Tech hi,它们在示例之后发布:(这是test.txt)这是一个跟进,而这又是一个跟进,因为您的示例忽略了一些角落案例,这些案例至少应该包含在实际需求中。同一标题部分中是否有多个区域应添加另一行?是否有不包含任何有趣区域的标题部分?同时考虑如何将其简化为一个主题。覆盖目标文件对于您的问题并不重要,因此您可以删除该部分。读取文件中的行也不是问题的一部分,因此代码(以及任何解决方案)可以简单地处理内存中的字符串列表。这使得回答更容易,让我们专注于你的具体问题。谢谢,也许我做错了什么,但我不能让它覆盖test.txt(输入文件)不能怎么做?我链接到的演示确实做到了这一点,我没有对程序的这一部分做任何更改,所以如果它以前工作过,现在应该仍然工作;不管怎么说,正如上面指出的,你没有把重点放在一个。抱歉,有一个语法错误,这让每个人都很难理解。现在可以工作了,就像在演示中一样。解决了,谢谢!
*Title Test
sometext 1 1 1 1
anothertext 1 1 1 1
#Not expecting *Title Test2 on this line.
whatever
asdas 1 1 1 1 
rthtr 1 1 1 1 
asdasf 1 1 1 1 
asfasf 1 1 1 1 
blabla 1 1 1 1 
#Expecting *Title Test2 on this line.
124124124
*Title Alpha
sfdiasas 1 1 1 1 
qwdqwqd 1 1 1 1
#Not expecting *Title Alpha2 on this line.
someothertexting
sdsdfds 1 1 1 1 
sdasda 1 1 1 1
egrwefw 1 1 1 1 
poeifwio 1 1 1 1
dkvnsjc 1 1 1 1 
kdnwwjkev 1 1 1 1
#Expecting *Title Alpha2 on this line.
#and so on for thousands of them..