ProvoWallis wrote: > > My document looks like this > > <level1>A. Title Text > <level2>1. Title Text > <level2>1. Title Text > <level2>1. Title Text > <level1>B. Title Text > <level2>1. Title Text > <level2>1. Title Text > > but I want to change the numbering of the second level to sequential > numbers like 1, 2, 3, etc. so my output would look like this > > <level1>A. Title Text > <level2>1. Title Text > <level2>2. Title Text > <level2>3. Title Text > <level1>B. Title Text > <level2>1. Title Text > <level2>2. Title Text > ...
Here's a fixed-up version of your approach: import re source_text = """ <level1>A. Title Text <level2>1. Title Text <level2>1. Title Text <level2>1. Title Text <level1>B. Title Text <level2>1. Title Text <level2>1. Title Text""" class ReplacePtSubNumber(object): line_pattern = re.compile(""" (\<\w+\>) # <level1> (\w) # second level (\.\s+\w+\s*\w+) # . Title Text """, re.VERBOSE) def __init__(self): self._count = 0 def sub(self, match): level, second, rest = match.groups() if second.isalpha(): self._count = 0 else: self._count +=1 second = str(self._count) return "%s%s%s" % (level, second, rest) def replace(self, source): return self.line_pattern.sub(self.sub, source) >>> r = ReplacePtSubNumber() >>> print r.replace(source_text) <level1>A. Title Text <level2>1. Title Text <level2>2. Title Text <level2>3. Title Text <level1>B. Title Text <level2>1. Title Text <level2>2. Title Text HTH Michael -- http://mail.python.org/mailman/listinfo/python-list