从输入中获取项目在列表中的位置(Python)

时间:2016-01-25 21:19:45

标签: python list

我有一个包含单词的列表。我想在用户要求的句子中获得该单词的位置。 (我正在使用python) 例如,如果我有句子:"Hello world how are you doing today world?" 'World'出现在第一和第八位。如果用户想要知道该句子中单词'world'的位置,则会打印"The word world is in position 1 and 8"。我知道enumerate方法但无法使用输入或elif语句。无论单词出现多少次,我都希望得到句子中任何单词的位置。

5 个答案:

答案 0 :(得分:2)

您可以使用正则表达式提取单词,然后在列表推导中使用enumerate()来查找单词的索引:

>>> import re
>>> s =  "Hello world how are you doing today world?"
>>> word = input("Enter a word: ").lower()
Enter a word: world
>>> [i for i, v in enumerate(re.findall(r'\w+', s)) if v == word]
[1, 7]

答案 1 :(得分:2)

VtID

答案 2 :(得分:0)

在您的句子中,单词"world"出现在第1和第7位。

> sentence = "Hello world how are you doing today world?"
> word = input("Enter word:  ").lower()
> answer = [i for i, w in enumerate(sentence.lower().split()) if word in w]
> answer
> [1, 7]

无论是大小写还是标点符号,都可以使用。

答案 3 :(得分:-1)

re.finditerenumerate

>>> import re
>>> s='Hello world how are you doing today world?'
>>> word='world'
>>> [i for i, w in enumerate(re.finditer('\w+', s)) if w.group()==word]
[1, 7]

我们(贪婪地)找到由非单词字符分隔的每个字符序列,迭代它,并存储索引,如果它等于目标单词。

答案 4 :(得分:-1)

 import re
 s='Hello world how are you doing today world?'
 word='world'
 [i for i, w in enumerate(re.findall('\w+', s)) if w.lower() == word.lower()]