Python Count没有重置?

时间:2014-07-23 20:34:51

标签: python count increment

我试图在我的.txt中出现〜||〜之后插入一个增量。我有这个工作,但是我想将它拆分,所以在每个分号后,它从1开始重新开始。

到目前为止,我有以下内容,除了以分号分隔外,它可以执行所有操作。

inputfile = "output2.txt"    
outputfile = "/output3.txt"  
f = open(inputfile, "r")  
words = f.read().split('~||~')  
f.close()  
count = 1   
for i in range(len(words)):  
      if ';' in words [i]:  
        count = 1  
    words[i] += "~||~" + str(count)  
    count = count + 1  
f2 = open(outputfile, "w")  
f2.write("".join(words))  

2 个答案:

答案 0 :(得分:0)

您可以按照;进行初始拆分,然后在~||~上拆分子串,而不是按照现在的方式重置计数器。您必须以另一种方式存储您的文字,因为您不再执行words = f.read().split('~||~'),但无论如何都要制作一个全新的列表更安全。

inputfile = "output2.txt"    
outputfile = "/output3.txt"  
all_words = []
f = open(inputfile, "r")  
lines = f.read().split(';')
f.close()

for line in lines:
  count = 1
  words = line.split('~||~')
  for word in words:
    all_words.append(word + "~||~" + str(count))
    count += 1

f2 = open(outputfile, "w")  
f2.write("".join(all_words))  

看看这是否适合您。您也可能希望在其中放置一些策略性的换行符,以使输出更具可读性。

答案 1 :(得分:0)

为什么不首先根据分号拆分文件,然后在每个段中计算'〜||〜'的出现次数。

import re

count = 0

with open(inputfile) as f:
    semicolon_separated_chunks = f.read().split(';')
    count = len(re.findall('~||~', semicolon_separated_chunks))

# if file text is 'hello there ~||~ what is that; what ~||~ do you ~|| mean; nevermind ~||~'
# then count = 4