在行中搜索复数词并使其成为单数词

问题描述

我想查找该行是否包含多个单词。如果是这样,我想把这些词改成单数。

例如:

file1.txt

那个香蕉是黄色的。它们的味道确实不错。

Expected_output.txt

那个香蕉是黄色的。味道确实不错。

请帮帮我。

我尝试使用 .re 从单词中删除 's'。但它会删除文件中的每个“s”。我只想删除单词末尾的's'。例如,“麻袋”。我想要'sack',但我得到了'ack'。 这是我试过的。

with open('file1.txt') as file1:
    file1 = file1.read()
test = re.sub('s',' ',file1)
with open('file1.txt','w') as out:
    out.writelines(test)

解决方法

您基本上有 2 个选项:nltk 库(更复杂)或带有 pattern 的 python 包。整洁可能是:

from pattern.text.en import singularize

plurals = ['caresses','flies','dies','mules','geese','mice','bars','foos','families','dogs','child','wolves']

singles = [singularize(plural) for plural in plurals]
print(singles)

查看更多here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...