我正在熟悉 Python,并且正在制造一些问题以帮助自己了解该语言的来龙去脉。我的下一个问题如下:
我从互联网上复制并粘贴了大量文本,但复制和粘贴添加了几行新行来分解巨大的字符串。我希望以编程方式删除所有这些并将字符串返回到一个巨大的字符 block 中。这显然是正则表达式的工作(我认为),并且解析文件并删除换行符的所有实例听起来像是可行的,但对我来说似乎并没有那么顺利。
有没有简单的方法来解决这个问题?看起来很简单。
最佳答案
两种主要选择:将所有内容作为单个字符串读取并删除换行符:
clean = open('thefile.txt').read().replace('\n', '')
或者,逐行阅读,删除结束每一行的换行符,然后重新加入:
clean = ''.join(l[:-1] for l in open('thefile.txt'))
前一种选择可能更快,但一如既往,我强烈建议您在您特别感兴趣的情况下测量速度(例如,使用 python -mtimeit
),而不是仅仅假设您知道如何性能会。 RE 可能更慢,但是,再说一遍:不要猜,MEASURE!
以下是我笔记本电脑上特定文本文件的一些数字:
$ 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.3 MB、34,000 行的文件,几毫秒或多或少对你来说可能并不重要;但由于最快的方法也是最简单的方法(远非罕见,尤其是在 Python 中;-),我认为这是一个很好的建议。
关于python - 简单的正则表达式问题 : Removing all new lines from a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1249670/