提问人:D. Forrester 提问时间:2/18/2017 更新时间:2/18/2017 访问量:54
如何让 python 在列表和返回位置中重新识别相同的字符串
How to get python to recongise same strings in list and return position
问:
我有一个句子单词,当该句子中的某个单词被输入为一种“查找此单词”功能时,程序会识别该单词在句子中出现的所有位置并返回结果
如果句子是:
I wish upon a star and the star wishes upon me
我想找到这个词,结果将是
the word "upon" is in position: 1 and 9
该句子不区分大小写,因此 Upon 和 UpoN 的处理方式相同。此外,该句子将由用户输入。
关于如何编码的任何想法?
答:
0赞
greedy52
2/18/2017
#1
一种方法是列表。根据关键字检查值,然后保留索引。enumerate
import re
def find_dup(sentence, keyword):
keyword = keyword.lower()
words = re.sub('[^\w]', ' ', sentence.lower()).split()
return [index for index, value in enumerate(words) if value == keyword]
sentence = 'I wish upon a star and the star wishes upon me. Upon capital.'
keyword = 'upon'
positions = find_dup(sentence, keyword)
print positions
print 'the word "{}" is in position: {}'.format(keyword, ' '.join([str(p) for p in positions]))
输出:
[2, 9, 11]
the word "upon" is in position: 2 9 11
评论
2 and 9
1 and 9
find_word = lambda sentence, needle: [index for index, word in enumerate(map(str.lower, sentence.split())) if word == needle.lower()]