我试图创建一个基本程序来挑选引号中单词的位置。到目前为止,我已经获得了以下代码:
print("Your word appears in your quote at position(s)", string.index(word))
但是,这只会打印单词索引的第一个位置,如果引号只包含单词一次就可以了,但如果单词出现多次,它仍然只打印第一个位置而不打印其他位置
我怎样才能让程序连续打印每个位置?
注意:非常容易混淆,string
这里存储了一个列表。该程序应该找到存储在该列表中的单词的位置。
答案 0 :(得分:1)
您似乎正在尝试在字符串中查找单词的出现:re
库有一个名为finditer
的函数,非常适合此目的。我们可以将它与列表推导结合使用来制作单词索引的列表:
>>> import re
>>> word = "foo"
>>> string = "Bar foo lorem foo ipsum"
>>> [x.start() for x in re.finditer(word, string)]
[4, 14]
即使单词在另一个内部,此函数也会找到匹配项,如下所示:
>>> [x.start() for x in re.finditer("foo", "Lorem ipsum foobar")]
[12]
如果您不想这样,请将您的单词包含在这样的正则表达式中:
[x.start() for x in re.finditer("\s+" + word + "\s+", string)]
答案 1 :(得分:0)
以下是我快速制作的代码:
if (Convert.ToString(dgvAttendance.Rows[i].Cells["Present"].Value) == "P")
{
sumP += 1;
}
这应该有用,虽然返回单词的索引。您可以进行计算,在该单词之前添加所有单词的长度,以获得该字母的索引。
答案 2 :(得分:0)
可能不是最快/最好的方式,但它会起作用。用于而不是==如果有引用或其他意外的标点符号也是如此!希望这会有所帮助!!
def getWord(string, word):
index = 0
data = []
for i in string.split(' '):
if i.lower() in word.lower():
data.append(index)
index += 1
return data