找到一个模式,在python 2.7中添加新行

时间:2017-07-14 19:12:43

标签: python python-2.7

我正在尝试在文本文件中的模式之后添加两个换行符,然后返回更正的文件,而不删除模式。到目前为止,我只是成功地取代了模式:

def cleanTxt (list_path, results_path):

    with open (list_path,'r') as myText:
        data = myText.read()
        with open (results_path, 'w') as results_file:
            new = re.sub(r'\[.*?\]','\n\n', data)
            results_file.write(new)

            results_file.close()

我也尝试过其他方法,例如

for pattern in re.findall(r'\[{1,3}\:\[{1,3}\:\[{1,3}\]',myText):

但是无处可去。

如何在将模式留在文本文件中时添加换行符?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您只需要将匹配替换为匹配的文本,再加上两个换行符。在Python中,替换文本中的\g<0>表示整个原始匹配(注意:这是不同语言的正则表达式实现之间的不一致区域)。所以试试:

new = re.sub(r'\[.*?\]', r'\g<0>\n\n', data)

答案 1 :(得分:0)

这是您的代码,只需进行一些修改即可使用:

def cleanTxt (list_path, results_path):

    with open(list_path, 'r') as myText:
        data = myText.read()
        with open(results_path, 'w') as results_file:
            newArr = re.split(r'\[.*?\]', data)
            patt = re.findall(r'\[.*?\]', data)
            new = ""
            for i in xrange(len(patt)):
                new += newArr[i]
                new += patt[i]
                new += "\n\n"
            new += newArr[-1]
            results_file.write(new)

            results_file.close()