我正在编写一个函数,用户输入一个单词,然后输入一个字符串,该函数识别字符串中所有出现的位置和该单词的位置(尽管它实际上已转换为中间列表)。
我目前的代码只是识别单词的第一次出现,而不是更进一步。如果单词是字符串中的第一个单词,则它也不会识别单词,返回空列表。它还会说单词的实际位置 - 1,因为第一个单词被计为零。
我试图通过两种方式来解决这个问题,第一种是aString.insert(0, ' ')
,第二种是for i in __: if i == int: i += 1
。这些都不奏效。
此外,在执行.insert
时,我尝试在空间中放置一个字符,而不是一个空格(因为此部分无论如何都不打印),但这不起作用。
以下是代码:
def wordlocator(word):
yourWord = word
print("You have chosen the following word: " +yourWord)
aString = input("What string would you like to search for the given word?")
aString = aString.lower()
aString = aString.split()
b = [(i, j) for i, j in enumerate(aString)]
c = [(i, x) for i, x in b if x == yourWord]
return c
我正在寻找的输出是,如果有人......
wordlocator("word")
"please input a string generic message" "that is a word"
"4, word"
目前可行,但它会打印"3, word"
。如果字符串为"that is a word and this is also a word"
,那么它会忽略"word"
的进一步出现。
编辑:现在工作,使用更简单的代码。谢谢你的帮助!
答案 0 :(得分:1)
试试这个:
def wordlocator(word):
yourWord = word
print("You have chosen the following word: " +yourWord)
aString = raw_input("What string would you like to search for the given word?")
aString = aString.lower()
aString = aString.split()
b = [(i+1, j) for i, j in enumerate(aString) if j == yourWord.lower()]
return b
print wordlocator('word')
请注意,列表推导可以仅根据您要查找的匹配进行过滤。其实我只是改了它
我明白了:
What string would you like to search for the given word?This word is not that word is it?
[(2, 'word'), (6, 'word')]
请注意,如果重要的话,索引会减1,在理解
中将x添加到x新测试: 您选择了以下单词:word 你想用什么字符串搜索给定的单词?单词是单词 [(1,'word'),(4,'word')]