Python 将源文件格式化为目标文件格式的正则表达式
Python regular expression to format source file to destination file format
我有以下源格式的文本文件。我想将它转换为具有目标格式的文本文件。我只能打印出第一个图案。有人可以帮助如何遍历源文件以到达第 n 个模式并以目标格式打印结果吗?
源文件
pattern_1_begin
<2 lines of text>
pattern_1_end
....
pattern_n_begin
<3 lines of text>
pattern_n_end
目标格式
1 <1st line of pattern 1>
1 <2nd line of pattern 1>
...
n <1st line of pattern n>
n <2nd line of pattern n>
n <3rd line of pattern n>
代码:
pattern_content=[]
flag=False
with open(<filename>) as sourcefile:
for pattern in sourcefile:
if pattern.startswith('begin'):
flag=True
elif pattern.strip().endswith('end'):
flag=False
elif flag:
pattern_content.append(pattern)
print '\n'.join(pattern_content)
re
的一种方法,可能对您有所帮助
import re
patterns = re.findall(r'(?s)pattern_(\d)_begin\n(.*)\npattern__end',yourstring)
for p in patterns:
for line in p[1].split('\n'):
print(p[0]+' : '+ line)
我有以下源格式的文本文件。我想将它转换为具有目标格式的文本文件。我只能打印出第一个图案。有人可以帮助如何遍历源文件以到达第 n 个模式并以目标格式打印结果吗?
源文件
pattern_1_begin
<2 lines of text>
pattern_1_end
....
pattern_n_begin
<3 lines of text>
pattern_n_end
目标格式
1 <1st line of pattern 1>
1 <2nd line of pattern 1>
...
n <1st line of pattern n>
n <2nd line of pattern n>
n <3rd line of pattern n>
代码:
pattern_content=[]
flag=False
with open(<filename>) as sourcefile:
for pattern in sourcefile:
if pattern.startswith('begin'):
flag=True
elif pattern.strip().endswith('end'):
flag=False
elif flag:
pattern_content.append(pattern)
print '\n'.join(pattern_content)
re
的一种方法,可能对您有所帮助
import re
patterns = re.findall(r'(?s)pattern_(\d)_begin\n(.*)\npattern__end',yourstring)
for p in patterns:
for line in p[1].split('\n'):
print(p[0]+' : '+ line)