【问题标题】:How to check if string consist of consonant, vowel and consonant?如何检查字符串是否由辅音,元音和辅音组成?
【发布时间】:2018-06-19 05:15:20
【问题描述】:

假设我有一个字符串列表verbs = ["win", "dig", "be", "go", "break] 等。我想出了如何复制最后一个字母并向它们添加“ing”。但是,如何检查这些字符串中的字符是否由辅音元音辅音组成? 我有两个列表:

vowel = ["a", "e", "i", "o", "u"]
consonant = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"]

这里是代码示例:

for ver in verbs:
    if verb "I DON'T KNOW WHAT TO TYPE HERE":
        verb = verb[:len(verb)] + verb[len(verb) - 1: len(verb)] + "ing"
        - then do sth

【问题讨论】:

  • 旁注:verb[:len(verb)]给你全词,切片没有意义;只需使用 verb 代替。您可以在切片中使用负数,它们会自动从 len(object) 中减去,您可以省略切片组件以将它们保留为默认值(开始和结束),因此可以表示 verb[len(verb) - 1: len(verb)]verb[-1:],或者对于字符串,verb[-1] 就足够了。所以它是verb = verb + verb[-1] + 'ing'。或者只是verb += verb[-1] + 'ing'

标签: python python-3.x


【解决方案1】:

我会使用 sets 来进行快速的成员资格测试:

import string

vowel = set("aeiou")
consonant = set(string.ascii_lowercase) - vowel   # all letters that are not vowels

然后看看最后 3 个字母是否在集合中:

if len(verb) > 2 and verb[-3] in consonant and verb[-2] in vowel and verb[-1] in consonant:
    verb += verb[-1] + 'ing'

或使用严格的子集测试更紧凑:

if len(verb) > 2 and {verb[-3], verb[-1]} <= consonant and verb[-2] in vowel:
    verb += verb[-1] + 'ing'

verb += verb[-1] + 'ing' 语句使用扩充赋值将最后一个字母加上'ing' 附加到verb 字符串值。负数索引从序列末尾开始计算,因此-1 为您提供字符串中的最后一个字母:

>>> verb[-1]
'k'

演示:

>>> for verb in verbs:
...     if len(verb) > 2 and {verb[-3], verb[-1]} <= consonant and verb[-2] in vowel:
...         verb += verb[-1] + 'ing'
...     else:
...         verb += 'ing'
...     print(verb)
...
winning
digging
being
going
breaking

【讨论】:

  • 你不想要动词[0]、动词[1]和动词[2]吗?负数会超出范围,不是吗?
  • @emsimpson92:因为应该测试的是最后三个字符,而不是前三个。负指数从最后开始计数。
  • 我一定错过了那个规范。
  • @emsimpson92: Here it is: "如果任一边界为负,则将序列的长度添加到其中。"
【解决方案2】:

我建议使用一些 NLP 包(如 NodeBox 或 nltk)来执行此操作,而不是编写自定义代码来附加 ing。您可能会错过一些案例。

这里的一些答案可能会有所帮助:

Using NLTK and WordNet; how do I convert simple tense verb into its present, past or past participle form?

这个库也很有帮助 https://www.nodebox.net/code/index.php/Linguistics#verb_conjugation

一个例子:

import en
print en.verb.present_participle("be")

存在

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 2022-11-17
    • 2016-06-11
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多