J'essaie d'analyser le contenu d'une chaîne. Si la ponctuation est mélangée dans le mot, je souhaite les remplacer par des espaces.
Par exemple, si Johnny.Appleseed! Est: un * bon & agriculteur est entré en tant qu'entrée, alors il devrait indiquer qu'il y a 6 mots, mais mon code ne le voit que comme 0 mot. Je ne sais pas comment supprimer un caractère incorrect.
FYI: J'utilise Python 3, je ne peux pas non plus importer de bibliothèques
string = input("type something")
stringss = string.split()
for c in range(len(stringss)):
for d in stringss[c]:
if(stringss[c][d].isalnum != True):
#something that removes stringss[c][d]
total+=1
print("words: "+ str(total))
strs = "Johnny.Appleseed!is:a*good&farmer"
lis = []
for c in strs:
if c.isalnum() or c.isspace():
lis.append(c)
else:
lis.append(' ')
new_strs = "".join(lis)
print new_strs #print 'Johnny Appleseed is a good farmer'
new_strs.split() #prints ['Johnny', 'Appleseed', 'is', 'a', 'good', 'farmer']
Utilisation de regex
:
>>> import re
>>> from string import punctuation
>>> strs = "Johnny.Appleseed!is:a*good&farmer"
>>> r = re.compile(r'[{}]'.format(punctuation))
>>> new_strs = r.sub(' ',strs)
>>> len(new_strs.split())
6
#using `re.split`:
>>> strs = "Johnny.Appleseed!is:a*good&farmer"
>>> re.split(r'[^0-9A-Za-z]+',strs)
['Johnny', 'Appleseed', 'is', 'a', 'good', 'farmer']
Voici une solution d'une ligne qui ne nécessite aucune importation de bibliothèque.
Il remplace les caractères non alphanumériques (comme la ponctuation) par des espaces, puis la variable split
s.
Inspiré de " Chaînes Python divisées avec plusieurs séparateurs "
>>> s = 'Johnny.Appleseed!is:a*good&farmer'
>>> words = ''.join(c if c.isalnum() else ' ' for c in s).split()
>>> words
['Johnny', 'Appleseed', 'is', 'a', 'good', 'farmer']
>>> len(words)
6
essayez ceci: il analyse Word_list en utilisant re, puis crée un dictionnaire de Word: apparences
import re
Word_list = re.findall(r"[\w']+", string)
print {Word:word_list.count(Word) for Word in Word_list}
Que diriez-vous d'utiliser Counter à partir de collections?
import re
from collections import Counter
words = re.findall(r'\w+', string)
print (Counter(words))
for ltr in ('!', '.', ...) # insert rest of punctuation
stringss = strings.replace(ltr, ' ')
return len(stringss.split(' '))
Je sais que c'est une vieille question, mais ...
string = "If Johnny.Appleseed!is:a*good&farmer"
a = ["*",":",".","!",",","&"," "]
new_string = ""
for i in string:
if i not in a:
new_string += i
else:
new_string = new_string + " "
print(len(new_string.split(" ")))
#Write a python script to count words in a given string.
s=str(input("Enter a string: "))
words=s.split()
count=0
for Word in words:
count+=1
print(f"total number of words in the string is : {count}")