title: How to return plain text from Beautiful Soup instead of unicode
body: <p>I am using BeautifulSoup4 to scrape this web page, however I'm getting the weird unicode text that BeautifulSoup returns. </p>
  
  <p>Here is my code:</p>
  
  <pre><code>    site = "http://en.wikipedia.org/wiki/"+a+"_"+str(b)
      hdr = {'User-Agent': 'Mozilla/5.0'}
      req = urllib2.Request(site,headers=hdr)  
      req.add_header('Accept-enconding', 'gzip') #Header to check for gzip
      page = urllib2.urlopen(req)
      if page.info().get('Content-Encoding') == 'gzip': #IF checks gzip
          data = page.read()
          data = StringIO.StringIO(data)
          gzipper = gzip.GzipFile(fileobj=data)
          html = gzipper.read()
          soup = BeautifulSoup(html, fromEncoding='gbk')
      else:
          soup = BeautifulSoup(page)
  
      section = soup.find('span', id='Events').parent
      events = section.find_next('ul').find_all('li')
      print soup.originalEncoding
      for x in events:
          print x
  </code></pre>
  
  <p>Bascially I want x to be in plain English. I get, instead, things that look like this:</p>
  
  <pre><code>&lt;li&gt;&lt;a href="/wiki/153_BC" title="153 BC"&gt;153 BC&lt;/a&gt; â€“ &lt;a href="/wiki/Roman_consul" title="Roman consul"&gt;Roman consuls&lt;/a&gt; begin their year in office.&lt;/li&gt;
  </code></pre>
  
  <p>There's only one example in this particular string, but you get the idea. </p>
  
  <p>Related: I go on to cut up this string with some regex and other string cutting methods, should I switch this to plain text before or after I cut it up? I'm assuming it doesn't matter but seeing as I'm defering to SO anyways, I thought I'd ask. </p>
  
  <p>If anyone knows how to fix this, I'd appreciate it. Thanks</p>
  
  <p>EDIT: Thanks J.F. for the tip, I now used this after my for loop:</p>
  
  <pre><code>    for x in events:
          x = x.encode('ascii')
          x = str(x)
          #Find Content
          regex2 = re.compile("&gt;[^&gt;]*&lt;")
          textList = re.findall(regex2, x)
          text = "".join(textList)
          text = text.replace("&gt;", "")
          text = text.replace("&lt;", "")
          contents.append(text)
  </code></pre>
  
  <p>However, I still get things like this:</p>
  
  <pre><code>2013 &amp;#8211; At least 60 people are killed and 200 injured in a stampede after celebrations at F&amp;#233;lix Houphou&amp;#235;t-Boigny Stadium in Abidjan, Ivory Coast.
  </code></pre>
  
  <p>EDIT:
  Here is how I make my excel spreadsheet (csv) and send in my list</p>
  
  <pre><code>rows = zip(days, contents)
  with open("events.csv", "wb") as f:
  writer = csv.writer(f)
  for row in rows:
      writer.writerow(row)
  </code></pre>
  
  <p>So the csv file is created during the program and everything is imported after the lists are generated. I just need to it to be readable text at that point.</p>