对于文件中的每一行,使用换行符替换可变长度的多个空白子字符串

时间:2015-11-12 02:53:54

标签: python regex string

使用Python 2.7.1,我读了一个文件:

input = open(file, "rU")
tmp = input.readlines()

看起来像这样:

>name     -----meoidoad
>longname -lksowkdkfg
>nm       --kdmknskoeoe---
>nmee     dowdbnufignwwwwcds--

也就是说,每一行都有一个空子的短子串,但这个子串的长度因行而异。

我想编写编辑我的tmp对象的脚本,这样当我将tmp写入文件时,结果就是

>name
-----meoidoad
>longname
-lksowkdkfg
>nm
--kdmknskoeoe---
>nmee
dowdbnufignwwwwcds--

即。我想将每一行分成两行,在空格的子串中(并删除过程中的空格)。

在空白之后字符串的起始位置在文件中总是相同的,但大批文件中可能会有所不同我正在努力。所以,我需要一个不依赖职位的解决方案。

我在这里看到过很多类似的问题,有很多很受欢迎的答案,使用简短的正则表达式脚本来完成,所以我可能会复制上一个问题。然而,到目前为止,我所看到的并不适用于我。

2 个答案:

答案 0 :(得分:1)

import re

with open('path/to/input') as infile, open('path/to/output', 'w') as outfile:
    for line in infile:
        outfile.write(re.sub('\s\s+', '\n', line))

答案 1 :(得分:0)

如果文件不是很大(即数百MB),您可以使用split()join()简洁地执行此操作:

with open(file, 'rU') as f, open(outfilename, 'w') as o:
    o.write('\n'.join(f.read().split()))

我还建议不要命名任何input,因为这会掩盖内置的内容。