separar - ¿Cómo encuentro la posición de MÁS DE UNA subcadena en una cadena(shell de Python 3.4.3)?
python online (3)
El siguiente código muestra la posición de "palabra" si aparece una vez en la cadena. ¿Cómo puedo cambiar mi código para que si la "palabra" aparece más de una vez en la cadena, imprima todas las posiciones?
string = input("Please input a sentence: ")
word = input("Please input a word: ")
string.lower()
word.lower()
list1 = string.split('' '')
position = list1.index(word)
location = (position+1)
print("You''re word, {0}, is in position {1}".format (word, location))
Otra solución que no se divide en espacio.
def multipos(string, pattern):
res = []
count = 0
while True:
pos = string.find(pattern)
if pos == -1:
break
else:
res += [pos+count]
count += pos+1
string = string[pos+1:]
return res
test = "aaaa 123 bbbb 123 cccc 123"
res = multipos("aaaa 123 bbbb 123 cccc 123", "123")
print res
for a in res:
print test[a:a+3]
Y la salida del script:
% python multipos.py
[5, 14, 23]
123
123
123
Use enumerate
:
[i for i, w in enumerate(s.split()) if w == ''test'']
Ejemplo:
s = ''test test something something test''
Salida:
[0, 1, 4]
Pero supongo que no es lo que estás buscando, si necesitas iniciar índices de palabras en una cadena, te recomendaría usar re.finditer
:
import re
[w.start() for w in re.finditer(''test'', s)]
Y la salida para el mismo s
sería:
[0, 5, 30]
sentence = input("Please input a sentence: ")
word = input("Please input a word: ")
sentence = sentence.lower()
word = word.lower()
wordlist = sentence.split('' '')
print ("Your word ''%s'' is in these positions:" % word)
for position,w in enumerate(wordlist):
if w == word:
print("%d" % position + 1)