title: Stop Words from python
body: <p>I have a text file where I am counting the sum of lines, sum of characters and sum of words. How can I clean the data by removing stop words such as (the, for, a) using string.replace()</p>
  
  <p>I have the codes below as of now.</p>
  
  <p>Ex. if the text file contains the line:</p>
  
  <pre><code>"The only words to count are Buttons and Shares for this text"
  </code></pre>
  
  <p>It should output:</p>
  
  <pre><code>1 Buttons
  1 Shares
  1 words
  1 only
  1 text
  </code></pre>
  
  <p>Although my code does not output the stop words that I have blacklisted but it also removes the stop words if its inside any other words. Below is what my code outputs. </p>
  
  <pre><code>1 Butns (this is a problem)
  1 Shs (this is a problem)
  1 words
  1 only
  1 text
  </code></pre>
  
  <p>Below is the code I have as of now.</p>
  
  <pre><code># Open the input file
  fname = open('2013_honda_accord.txt', 'r').read()
  
  # COUNT CHARACTERS
  num_chars = len(fname)
  
  # COUNT LINES 
  num_lines = fname.count('\n')
  
  #COUNT WORDS
  fname = fname.lower() # convert the text to lower first
  
  # Remove Stop words 
  blacklist = ["the", "to", "are", "and", "for", "this" ]  # Blacklist of words to be filtered out
  for word in blacklist:
     fname = fname.replace(word, "")
  
  # Removing special characters from the word count
  get_alphabetical_characters = lambda word: "".join([char if char in 'abcdefghijklmnopqrstuvwxyz1234567890-' else '' for char in word])
  words = list(map(get_alphabetical_characters, fname.split()))
  
  d = {}
  for w in words:
      # if the word is repeated - start count
      if w in d:    
         d[w] += 1
      # if the word is only used once then give it a count of 1
      else:
         d[w] = 1
  
  # Add the sum of all the repeated words 
  num_words = sum(d[w] for w in d)
  
  lst = [(d[w], w) for w in d]
  # sort the list of words in alpha for the same count 
  lst.sort()
  # list word count from greatest to lowest (will also show the sort in reserve order Z-A)
  lst.reverse()
  
  # output the total number of characters
  print('Your input file has characters = ' + str(num_chars))
  # output the total number of lines
  print('Your input file has num_lines = ' + str(num_lines))
  # output the total number of words
  print('Your input file has num_words = ' + str(num_words))
  
  print('\n The 30 most frequent words are \n')
  
  # print the number of words as a count from the text file with the sum of each word used within the text
  i = 1
  for count, word in lst[:10000]:
  print('%2s.  %4s %s' % (i, count, word))
  i += 1
  </code></pre>
  
  <p>Thanks</p>