找到列表中相同的两个单词的位置

时间:2016-05-15 16:18:30

标签: python-3.x

所以我创建了这个代码,要求一个人输入一个句子。 之后他们在那句话中输入一个单词。 然后代码将输出单词所在的位置。

print("Type a sentence here")
sentence = input("")

sentence = sentence.split()
print("Now type a word in that sentence.")
word = input('')

if word in sentence:
    print("I found",word,"in your sentence.")
else:
    print("That word is not in your sentence.")

print(sentence.index(word))

我遇到的问题是,如果他们在句子中放入两个相同的单词,它只会输出第一个单词。请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以使用内置enumerate将列表sentence中的每个字与其对应的位置相关联。然后使用列表推导来获取列表中每个单词的出现次数。

print([i for i, j in enumerate(sentence) if j == word])

一些进一步的考虑因素是,您可能希望将您的句子转换为小写并删除标点符号,然后再尝试匹配您的单词,这样正确的标点符号和大小写就不会使您的匹配错过。此外,您不需要''中的input()才能使其有效 - 没有提示的空input()就可以了。

答案 1 :(得分:0)

这个pb由这个脚本解决:

import re  
print("Type a sentence here")
sentence = raw_input("") 
print("Now type a word in that sentence.")

word = raw_input('')
words = re.sub("[^\w]", " ",  sentence).split() # using re


position = 1
list_pos = []
for w in words :
   if w == word:
        print position
        list_pos.append(position)
   position += 1
if list_pos:
   print("I found",word,"in your sentence.")
else:
   print("That word is not in your sentence.")
print list_pos