找到以字母结尾的单词" it" ...而否定所有其他的话?

时间:2015-10-09 05:15:28

标签: python python-3.x

我正在使用字典文件。我只需要言语结束"它"。我在结束" ed"时使用计数器计算双辅音。这些话。我应该收到的代码是(最后3行):

wait waited
worrit worrited
simple= 83    double= 45"

从我所拥有的,我所需要做的就是摆脱所有其他不会以#34;"而我在提出解决方案时遇到了麻烦。 word.endswith只是重印了一些词。

words=[line.rstrip() for line in open('')]
wordset=set(words) 
count=0 
countt=0 
for word in words:
    if word[-1] != 't': continue
    if word+'i' in wordset: continue
    simple = word + 'ed'
    double = word + 'ted'
    if simple in wordset:
         print(word,simple) 
         count+=1
    elif double in wordset:
        print(word,double,'*')
        countt+=1
print('simple=',count,'   double=',countt)

2 个答案:

答案 0 :(得分:0)

words = "wait waited worrit worrited simple"
word = words.split()
for w in word:
    if w.endswith('it'):
        print(w)
    else:
        pass
  

这里我按空格分割了字符串,因此得到了一个列表。   我检查后是否有清单   元素以“它”结束

答案 1 :(得分:0)

坦率地说,我不确定我是否正确理解你的问题,特别是考虑到示例代码,但我会对它进行一次尝试:) 这是一个示例代码,如何让所有单词以' it'结尾。以及单打和双打打印的数量。过去时(正确?:):

line = "wait waited worrit worrited simple wit witted" 
words = set(line.split())

it_words = [el for el in words if el.endswith('it')]
simple_count = 0
double_count = 0

for w in it_words:
    if w+'ed' in words:
        print(w, w+'ed')
        simple_count += 1
    elif w+'ted' in words:
        print(w, w+'ted')
        double_count += 1

print ('simple = {0}, double = {1}'.format(simple_count, double_count))

在第4行,您会收到所有以' it'结尾的单词。使用列表理解;然后我们迭代它们 - 第8行 - 这比完整集更有效,因为这是我们唯一关心的。 在循环内部,只需检查附加“' ed”字样的单词即可。并且''存在于原始集合中,相应的计数器会递增。

BTW,这可以针对大型集合进行大大优化(例如,对其进行排序)。

HTH

P.S。原谅任何错别字,在ipad上输入python的可怕经历:)