Wie würde ich die Wörter in einem Satz zählen? Ich benutze Python.
Zum Beispiel könnte ich die Zeichenfolge haben:
string = "I am having a very Nice [email protected]$ day. "
Das wären 7 Wörter. Ich habe Probleme mit der zufälligen Anzahl von Leerzeichen nach/vor jedem Wort sowie mit Zahlen oder Symbolen.
str.split()
ohne Argumente wird bei der Ausführung von Whitespace-Zeichen aufgeteilt:
>>> s = 'I am having a very Nice day.'
>>>
>>> len(s.split())
7
Aus der verlinkten Dokumentation:
Wenn sep nicht angegeben ist oder
None
ist, wird ein anderer Aufteilungsalgorithmus angewendet: Läufe mit aufeinander folgenden Leerzeichen werden als einzelnes Trennzeichen betrachtet und das Ergebnis enthält am Anfang oder am Ende keine leeren Zeichenfolgen, wenn die Zeichenfolge ein oder enthält nachlaufender Leerraum.
Sie können regex.findall()
verwenden:
import re
line = " I am having a very Nice day."
count = len(re.findall(r'\w+', line))
print (count)
Dies ist ein einfacher Word-Zähler, der Regex verwendet. Das Skript enthält eine Schleife, die Sie beenden können, wenn Sie fertig sind.
#Word counter using regex
import re
while True:
string =raw_input("Enter the string: ")
count = len(re.findall("[a-zA-Z_]+", string))
if line == "Done": #command to terminate the loop
break
print (count)
print ("Terminated")
Ok, hier ist meine Version. Ich habe festgestellt, dass Ihre Ausgabe 7
sein soll, was bedeutet, dass Sie keine Sonderzeichen und Zahlen zählen möchten. Also hier ist Regex-Muster:
re.findall("[a-zA-Z_]+", string)
Wo [a-zA-Z_]
bedeutet, dass es mit any Zeichen zwischen a-z
(Kleinbuchstaben) und A-Z
(Großbuchstaben) übereinstimmt.
Über Räume. Wenn Sie alle zusätzlichen Leerzeichen entfernen möchten, machen Sie einfach Folgendes:
string = string.rstrip().lstrip() # Remove all extra spaces at the start and at the end of the string
while " " in string: # While there are 2 spaces beetwen words in our string...
string = string.replace(" ", " ") # ... replace them by one space!
s = "I am having a very Nice [email protected]$ day. "
sum([i.strip(string.punctuation).isalpha() for i in s.split()])
Die obige Anweisung durchläuft jeden Textblock und entfernt Satzzeichen, bevor überprüft wird, ob der Block wirklich eine Zeichenfolge von Alphabeten ist.
def wordCount(mystring):
tempcount = 0
count = 1
try:
for character in mystring:
if character == " ":
tempcount +=1
if tempcount ==1:
count +=1
else:
tempcount +=1
else:
tempcount=0
return count
except Exception:
error = "Not a string"
return error
mystring = "I am having a very Nice [email protected]$ day."
print(wordCount(mystring))
ausgabe ist 8
Wie wäre es mit einer einfachen Schleife, um die Anzahl der Leerzeichen zu zählen !?
txt = Just an example here move along
count = 1
for i in txt:
if i == " ":
count += 1
print(count)
import string
sentence = "I am having a very Nice [email protected]$ day. "
# Remove all punctuations
sentence = sentence.translate(str.maketrans('', '', string.punctuation))
# Remove all numbers"
sentence = ''.join([Word for Word in sentence if not Word.isdigit()])
count = 0;
for index in range(len(sentence)-1) :
if sentence[index+1].isspace() and not sentence[index].isspace():
count += 1
print(count)