首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >简单的正则表达式问题:从文件中删除所有新行

简单的正则表达式问题:从文件中删除所有新行
EN

Stack Overflow用户
提问于 2009-08-08 19:16:00
回答 6查看 70.5K关注 0票数 24

我逐渐熟悉了python,并且为了帮助自己学习这门语言的细节而制造了一些问题。我的下一个问题如下:

我从互联网上复制和粘贴了大量的文本,但复制和粘贴添加了几行新行来拆分这个巨大的字符串。我希望通过编程删除所有这些,并将字符串返回到一个巨大的字符斑点中。这显然是regex的工作(我认为),解析文件并删除换行符的所有实例听起来似乎是可行的,但对我来说似乎并不是那么顺利。

有没有一种简单的方法来解决这个问题?这看起来很简单。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-08-08 19:54:29

两种主要的替代方法是:将所有内容作为单个字符串读取,并删除换行符:

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.3MB、34000行的文件上,多几毫秒或少几毫秒可能对您没有多大影响;但由于最快的方法也是最简单的方法(远非罕见,特别是在Python中;-),我认为这是一个很好的建议。

票数 36
EN

Stack Overflow用户

发布于 2009-08-08 19:33:15

我不会使用正则表达式来简单地替换换行符-我会使用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()
票数 10
EN

Stack Overflow用户

发布于 2009-08-08 19:21:59

import re
re.sub(r"\n", "", file_contents_here)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1249670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档