it-swarm.com.de

Wie zählt man die Anzahl der Wörter in einem Satz, ignoriert Zahlen, Satzzeichen und Leerzeichen?

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. 

51
jerry2144

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.

72
arshajii

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)
46
karthikr

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")
4
Aliyar

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!
2
JadedTuna
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. 

2
boon kwee
    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

1
Darrell White

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)
0
Anto
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)
0
Adam