Comment pourrais-je compter pour compter les mots dans une phrase? J'utilise Python.
Par exemple, je pourrais avoir la chaîne:
string = "I am having a very Nice 23!@$ day. "
Ce serait 7 mots. J'ai des problèmes avec la quantité aléatoire d'espaces après/avant chaque mot ainsi que lorsque des nombres ou des symboles sont impliqués
str.split()
sans aucun argument, se scinde en séries de caractères blancs:
>>> s = 'I am having a very Nice day.'
>>>
>>> len(s.split())
7
De la documentation liée:
Si sep n'est pas spécifié ou est
None
, un algorithme de scission différent est appliqué: les suites d'espaces consécutifs sont considérées comme un séparateur unique et le résultat ne contiendra aucune chaîne vide au début ou à la fin si la chaîne a des espaces de fuite.
Vous pouvez utiliser regex.findall()
:
import re
line = " I am having a very Nice day."
count = len(re.findall(r'\w+', line))
print (count)
Ceci est un simple compteur de mots utilisant regex. Le script comprend une boucle que vous pouvez terminer lorsque vous avez terminé.
#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 voici ma version de faire cela. J'ai remarqué que vous voulez que votre sortie soit 7
, ce qui signifie que vous ne voulez pas compter les caractères spéciaux et les nombres. Donc, voici le motif regex:
re.findall("[a-zA-Z_]+", string)
Où [a-zA-Z_]
signifie qu'il correspondra à n'importe quel caractère entre a-z
(minuscule) et A-Z
(majuscule).
À propos des espaces. Si vous souhaitez supprimer tous les espaces supplémentaires, procédez comme suit:
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 23!@$ day. "
sum([i.strip(string.punctuation).isalpha() for i in s.split()])
La déclaration ci-dessus parcourt chaque bloc de texte et supprime les ponctuations avant de vérifier si le bloc est réellement une chaîne d'alphabets.
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 23!@$ day."
print(wordCount(mystring))
la sortie est 8
Pourquoi ne pas utiliser une simple boucle pour compter le nombre d'espaces!?
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 23!@$ 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)