Trying to count words in a string
function, list, loops, python, string
Solution
Simple loop based solution:
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']
Better solution:
Using `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']
Problem
I'm trying to analyze the contents of a string. If it has a punctuation mixed in the word I want to replace them with spaces. For example, If Johnny.Appleseed!is:a*good&farmer is entered as an input then it should say there are 6 words, but my code only sees it as 0 words. I'm not sure how to remove an incorrect character. FYI: I'm using python 3, also I can't import any libraries ``` 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)) ```