简单正则表达式问题:从fi中删除所有新行

2024-04-26 00:48:18 发布

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


Tags: python
3条回答

我不会使用regex来简单地替换换行符-我会使用string.replace()。以下是完整的脚本:

f = open('input.txt')
contents = f.read()
f.close()
new_contents = contents.replace('\n', '')
f = open('output.txt', 'w')
f.write(new_contents)
f.close()

两个主要的替代方案:将所有内容都作为一个字符串读入并删除换行符:

clean = open('thefile.txt').read().replace('\n', '')

或者,逐行阅读,删除每行结尾的换行符,然后再次将其连接起来:

clean = ''.join(l[:-1] for l in open('thefile.txt'))

前一种方法可能更快,但是,和往常一样,我强烈建议您在您感兴趣的情况下测量速度(例如,使用python -mtimeit),而不是假设您知道性能如何。REs可能比较慢,但是,再一次:不要猜测,测量!

下面是我笔记本电脑上特定文本文件的一些编号:

$ python -mtimeit -s"import re" "re.sub('\n','',open('AV1611Bible.txt').read())"
10 loops, best of 3: 53.9 msec per loop
$ python -mtimeit "''.join(l[:-1] for l in open('AV1611Bible.txt'))"
10 loops, best of 3: 51.3 msec per loop
$ python -mtimeit "open('AV1611Bible.txt').read().replace('\n', '')"
10 loops, best of 3: 35.1 msec per loop

该文件是KJ圣经的一个版本,从here下载并解压缩(我认为在一个容易获取的文件上运行这样的测量非常重要,这样其他人就可以轻松地复制它们!)。

当然,对于一个4.3MB34000行的文件来说,几毫秒的时间或多或少对你来说并不重要;但是由于最快的方法也是最简单的方法(远不是不寻常的情况,特别是在Python中;-),我认为这是一个很好的建议。

import re
re.sub("\n", "", file-contents-here)

相关问题 更多 >