让我们用Python说我有这句话:
my_sentence = "I like to drive my car around the round block twice daily"
我希望找到“' round'在这句话中。我知道我可以使用find, index, rfind
和rindex
这样:
print my_sentence.find('round')
>>>24
我想要做的是找到每个字母的位置' round'在句子中,只使用第一次出现的单词' round'。我希望打印出每一个字母“#round;'在字符串中。我试过这样做(例如,找到最后一个字母并从那里开始):
last_letter = my_sentence.find('round')
last_letter2 = last_letter[-1::]
这会产生错误。那么,获取字符串中每个字母的位置的最佳方法是什么?我是Python的新手,我看到有办法找到一个单词的位置,但不是字符串中单词的每个字母。我该怎么做呢? 括号中的预期输出:
r (location 24) o (25) u (26) n(27) d(28)
答案 0 :(得分:2)
简单:只需查找单词的第一个匹配项,然后为字母添加偏移量。
>>> my_sentence = "I like to drive my car around the round block twice daily"
>>> word = 'round'
>>> pos = my_sentence.find(word)
>>> [(c, pos + i) for (i, c) in enumerate(word)]
[('r', 24), ('o', 25), ('u', 26), ('n', 27), ('d', 28)]
答案 1 :(得分:2)
编写辅助函数,例如:
def my_find(sentence, what):
try:
start = sentence.index(what)
return [(ch, idx) for idx, ch in enumerate(what, start)]
except ValueError:
return []
示例:
>>> my_find("I like to drive my car around the round block twice daily", "round")
[('r', 24), ('o', 25), ('u', 26), ('n', 27), ('d', 28)]
>>> my_find("I like to drive my car around the round block twice daily", "xyz")
[]
注意:这会以合理的方式处理word
不在my_sentence
的情况 - 其他答案会产生令人惊讶的结果......