我有以下文本文件:
很难向双关语者解释双关语,因为他们总是从字面上理解。
- 醇>
我曾经认为大脑是最重要的器官。然后我想,看看有什么告诉我的。
我使用以下脚本来删除编号和换行符:
import re
with open('jokes.txt', 'r+') as original_file:
modfile = original_file.read()
modfile = re.sub("\d+\. ", "", modfile)
modfile = re.sub("\n", "", modfile)
original_file.seek(0)
original_file.truncate()
original_file.write(modfile)
运行脚本后,我的文本文件如下:
很难向双关语者解释双关语,因为他们总是采取行动 事实上。我曾经认为大脑是最重要的 器官。然后我想,看看有什么告诉我的。
我希望文件是:
很难向双关语者解释双关语,因为他们总是从字面上理解事物 我曾经认为大脑是最重要的器官。然后我想,看看有什么告诉我的。
如何在不修改所有行的情况下删除新行?
答案 0 :(得分:2)
您可以使用单个替换,使用以下正则表达式:
re.sub(r"\d+\. |(?<!^)\n", "", modfile, flags=re.MULTILINE)
(?<!^)\n
将匹配换行符,除非它位于一行的开头。标记re.MULTILINE
使^
与每个行的开头匹配。
在代码中:
import re
with open('jokes.txt', 'r+') as original_file:
modfile = original_file.read()
midfile = re.sub(r"\d+\. |(?<!^)\n", "", modfile, flags=re.MULTILINE)
original_file.seek(0)
original_file.truncate()
original_file.write(modfile)
如果您愿意,也可以使用负向前瞻而不是后瞻:
r"\d+\. |\n(?!\n)"