Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Tuesday, July 26, 2016

Trying to count words in a string

Trying to count words in a string


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

Answer by Rushy Panchal for Trying to count words in a string


for ltr in ('!', '.', ...) # insert rest of punctuation       stringss = strings.replace(ltr, ' ')  return len(stringss.split(' '))  

Answer by Ashwini Chaudhary for Trying to count words in a string


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']  

Answer by Prashant Kumar for Trying to count words in a string


Here's a one-line solution that doesn't require importing any libraries.
It replaces non-alphanumeric characters (like punctuation) with spaces, and then splits the string.

Inspired from "Python strings split with multiple separators"

>>> 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  

Answer by Dotan Reis for Trying to count words in a string


try this: it parses the word_list using re, then creates a dictionary of word:appearances

import re  word_list = re.findall(r"[\w']+", string)  print {word:word_list.count(word) for word in word_list}  

Answer by TMoover for Trying to count words in a string


I know that this is an old question but...How about this?

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(" ")))  

Answer by sweet_sugar for Trying to count words in a string


How about using Counter from collections ?

import re  from collections import Counter    words = re.findall(r'\w+', string)  print (Counter(words))  


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

0 comments:

Post a Comment

Popular Posts

Powered by Blogger.