整理AI结果(原输入定义函数传参,这里直接设置输入):
# 返回某个词的单数或者复数 词组只能返回最后一个单词的复数形式
keyword = 'dog bowl'
p = inflect.engine()
keyword_var = []
if p.singular_noun(keyword) == False:
keyword_var.append((p.plural(keyword)))
else:
keyword_var.append(p.singular_noun(keyword))
print(keyword_var)
我需要变换的是数组,继续问AI:
AI给出的代码如果输入就是复数会变成False,基于它给的代码我进行了修改:
import inflect
from itertools import product
keyword = 'dog bowl'
p = inflect.engine()
phrase =keyword.split()
plural_forms = []
for word in phrase:
psigle = p.plural(word)
pplural = p.singular_noun(word)
if psigle == False:
psigle = word
if pplural == False:
pplural = word
plural_forms.append([psigle, pplural])
combinations = list(product(*plural_forms))
combinations_word=[]
for c in combinations:
combinations_word.append(' '.join(c))
print(combinations_word)
combinations函数返回的是可迭代元素中的一个组合
combinations(p,r) p是一个list参数,r是数字,r长度的tuple,按顺序排列,没有重复元素
permutations函数返回的是可迭代元素中的一个排列组合(全排列)。
permutations(p,r) p是一个list参数,r是数字,r长度的tuple,所有可能的顺序,没有重复的元素
import itertools
lst = [1, 2, 3]
permutations_lst = list(itertools.permutations(lst, 2)) #排列
combinations_list = list(itertools.combinations(lst, 2)) #组合
print(permutations_lst)
print(combinations_list)
发现之前的代码在变换bags这种复数形式的词的时候会报错:
加了判断单复数返回值相等时取本身的值,但遇到men时又报错了。
最后修改如下:
def get_word_s(word):
singular = p.singular_noun(word)
if not singular:
singular = word
if singular == word:
plural = p.plural(word)
else:
plural = word
return singular, plural
具体可以参考:https://blog.csdn.net/chl183/article/details/106956807
具体可以参考: https://blog.csdn.net/chl183/article/details/106956807