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