2015-10-09 124 views
0

我正在使用字典文件。我只是需要用词来结束“它”。我在使用计数器计算双辅音时,以这些单词的“ed”结尾。我应该接收回来的代码是(最后3行):查找以字母“it”结尾的单词...否定所有其他单词?

wait waited 
worrit worrited 
simple= 83 double= 45" 

从我有什么,我需要做的就是摆脱没有在结束所有换句话说,“它”和我无法提出解决方案。单词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) 
+0

如果不是以“it”结尾的话,您是否要计算一个“tt”字(“tt”in word') ( “它”)')? – jfs

+0

我只需要以“it”结尾的单词。我在使用计数器计算双辅音时,以这些单词的“ed”结尾。 –

+0

你只在t_中检查_ending。如果单词[-2:]!='它'不会'继续'更合适吗?什么是'如果word +'我'在wordset:继续'应该完成? –

回答

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

在这里,我通过空间分割字符串,并因此得到了一个清单。 有后,我检查是否列表 元素的endsWith“它”与否

+2

好答案*解释*以及提供代码。考虑更新您的答案,以包含有关此代码如何工作以及为什么这是最佳选项的解释。 – Ajean

+0

感谢您的建议@Ajean – trishnag

0

坦白地说,我不知道我理解正确的话你的问题,特别是考虑到示例代码,但我会采取一个刺它:) 下面是一个示例代码如何获得与“它”和单一打印数结尾的单词和连续的“T”时,过去时(正确:):

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'和'ted'的单词,并且相应的计数器递增。

顺便说一句,这可以大大优化大型集(例如,整理它)。

HTH

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

相关问题