586 Stimmen

Wie findet man alle Vorkommen einer Teilzeichenkette?

Python hat string.find() y string.rfind() um den Index einer Teilzeichenkette in einer Zeichenkette zu ermitteln.

Ich frage mich, ob es so etwas gibt wie string.find_all() die alle gefundenen Indizes zurückgeben kann (nicht nur den ersten vom Anfang oder den ersten vom Ende).

Zum Beispiel:

string = "test test test test"

print string.find('test') # 0
print string.rfind('test') # 15

#this is the goal
print string.find_all('test') # [0,5,10,15]

20 Stimmen

Was sollte 'ttt'.find_all('tt') zurückkehren?

4 Stimmen

Sollte er '0' zurückgeben. Natürlich muss es in einer perfekten Welt auch eine 'ttt'.rfind_all('tt') was '1' ergeben sollte.

5 Stimmen

Reine Anfragen zum Schreiben von Code sind auf Stack Overflow tabu - wir erwarten, dass sich die Fragen hier auf spezifisch Programmierprobleme - aber wir helfen Ihnen gerne, sie selbst zu schreiben! Sagen Sie es uns was Sie ausprobiert haben und wo Sie feststecken. Dies wird uns auch helfen, Ihre Frage besser zu beantworten.

0voto

def count_substring(string, sub_string):
    c=0
    for i in range(0,len(string)-2):
        if string[i:i+len(sub_string)] == sub_string:
            c+=1
    return c

if __name__ == '__main__':
    string = input().strip()
    sub_string = input().strip()

    count = count_substring(string, sub_string)
    print(count)

0voto

Lucas LP Punkte 11

Ich hatte das gleiche Problem und habe dies getan:

hw = 'Hello oh World!'
list_hw = list(hw)
o_in_hw = []

while True:
    o = hw.find('o')
    if o != -1:
        o_in_hw.append(o)
        list_hw[o] = ' '
        hw = ''.join(list_hw)
    else:
        print(o_in_hw)
        break

Im ziemlich neu bei der Codierung, so können Sie wahrscheinlich vereinfachen es (und wenn geplant, um kontinuierlich verwendet natürlich machen es eine Funktion).

Alles in allem funktioniert es wie vorgesehen für das, was ich tat.

Edit: Bitte beachten Sie dies ist für einzelne Zeichen nur, und es wird Ihre Variable zu ändern, so müssen Sie eine Kopie der Zeichenfolge in eine neue Variable erstellen, um es zu speichern, ich habe es nicht in den Code, weil seine einfache und seine nur zu zeigen, wie ich es funktionieren gemacht.

0voto

Bitte sehen Sie sich den folgenden Code an

#!/usr/bin/env python
# coding:utf-8
'''Python'''

def get_substring_indices(text, s):
    result = [i for i in range(len(text)) if text.startswith(s, i)]
    return result

if __name__ == '__main__':
    text = "How much wood would a wood chuck chuck if a wood chuck could chuck wood?"
    s = 'wood'
    print get_substring_indices(text, s)

-1voto

Durch Slicing finden wir alle möglichen Kombinationen, fügen sie in eine Liste ein und ermitteln die Häufigkeit des Auftretens mit count función

s=input()
n=len(s)
l=[]
f=input()
print(s[0])
for i in range(0,n):
    for j in range(1,n+1):
        l.append(s[i:j])
if f in l:
    print(l.count(f))

-1voto

Aminu Aminaldo Punkte 65

Um alle Vorkommen eines Zeichens in einer gegebenen Zeichenkette zu finden und als Wörterbuch zurückzugeben z.B.: hallo Ergebnis : {'h':1, 'e':1, 'l':2, 'o':1}

def count(string):
   result = {}
   if(string):
     for i in string:
       result[i] = string.count(i)
     return result
   return {}

oder Sie machen es wie folgt

from collections import Counter

   def count(string):
      return Counter(string)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X