python - 简单的正则表达式问题 : Removing all new lines from a file

标签 python regex

我正在熟悉 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/

相关文章:

python - 编写并保存 python 脚本到 arduino yun RAM

python - 将一组图像读入维度为 (num_img,channel, dim1, dim2) 的 4D Numpy 数组

python - 将 jsonString 转换为 Python 中可解析的内容?

python - 使用 setup.py 更新 Python 包

python - 加速数据帧从字典生成代码

Java RegEx - 非法字符点

regex - 如何使用linux命令搜索和替换文件中的多行字符串

java - RegExpr 与否定字符类混淆?

带有命名捕获组的正则表达式负前瞻

regex - 用于密码验证的正则表达式