用Python删除包含数字的行



我有一个txt文件,每行包含一个句子,并且有几行包含附加在字母后面的数字。例如:

The boy3 was strolling on the beach while four seagulls appeared flying.
There were 3 women sunbathing as well.
All children were playing happily.

我想删除像第一行(即。有固定在单词上的数字),但没有像第二行那样正确书写的行。

有谁知道一点吗?

您可以使用一个简单的正则表达式模式。我们从[0-9]+开始。此模式检测任意数字0-9的无限次数。意思是6或56或56790个作品。如果你想检测一个字符串后面有数字的句子,你可以使用这样的东西:([a-zA-Z][0-9]+)|([0-9]+[a-zA-Z])这个正则表达式字符串匹配一个字符串,在数字前面或数字后面有一个字母。您可以使用以下命令搜索字符串:

import re
lines = [
'The boy3 was strolling on the beach while 4 seagulls appeared flying.',
'There were 3 women sunbathing as well.',
]
for line in lines:
res = re.search("([a-zA-Z][0-9]+)|([0-9]+[a-zA-Z])", line)
if res is None:
# remove line

但是,如果您的句子可以包含特殊字符等,则可以在允许的字母中添加更多字符。

假设您的输入文本存储在文件in.txt中,您可以使用以下代码:

import re
with open("in.txt", "r") as f:
for line in f:
if not(re.search(r'(?!d)[w]d|d(?!d)[w]', line, flags=re.UNICODE)):
print(line, end="")

模式(?!d)[w]查找不包括数字的单词字符(w)。这个想法来自https://stackoverflow.com/a/12349464/2740367

相关内容

  • 没有找到相关文章

最新更新