对于文件中的每一行,将可变长度的多个空格子字符串替换为行b

2024-09-27 09:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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--

也就是说,我想把每一行分成两行,在这个空格子串处(并在这个过程中去掉空格)

字符串之后的起始位置在文件中,空格始终是相同的,但在我处理的大量文件中,可能会有所不同。因此,我需要一个不依赖于立场的解决方案

我在这里看到了许多类似的问题,其中有许多很受欢迎的答案都使用了简短的正则表达式脚本,所以我可能是在重复前面的问题。然而,到目前为止,我所看到的一切都不适合我


Tags: 文件字符串name脚本inputopentmp空格
2条回答

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

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

我还建议不要将任何东西命名为input,因为那样会屏蔽内置的

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))

相关问题 更多 >

    热门问题