I installed a stripe package yesterday and now my app is not running. I am trying to understand where the problem is. Is it something to do with PyShell
or HTLParser
or something else. I am posting with GAE tag as well hoping that the trace from logs may give a clue about the problem:
MLStripper instance has no attribute 'rawdata'
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
handler.post(*groups)
File "/base/data/home/apps/ting-1/1.354723388329082800/ting.py", line 2070, in post
pitch_no_tags = strip_tags(pitch_original)
File "/base/data/home/apps/ting-1/1.354723388329082800/ting.py", line 128, in strip_tags
s.feed(html)
File "/base/python_runtime/python_dist/lib/python2.5/HTMLParser.py", line 107, in feed
self.rawdata = self.rawdata + data
AttributeError: MLStripper instance has no attribute 'rawdata'
This is MLStripper:
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
set()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
MLStripper was working fine until yesterday.
And these are my other questions:
https://stackoverflow.com/questions/8152141/how-to-fix-this-attributeerror-with-htmlparser-py
https://stackoverflow.com/questions/8153300/how-to-fix-a-corrupted-pyshell-py
Solution for AttributeError Errors and exceptions in Python can be handled using exception handling i.e. by using try and except in Python. Example: Consider the above class example, we want to do something else rather than printing the traceback Whenever an AttributeError is raised.
A Python AttributeError is raised when you try to call an attribute of an object whose type does not support that method. For instance, trying to use the Python append() method on a string returns an AttributeError because strings do not support append().
If you are getting an object that has no attribute error then the reason behind it is because your indentation is goofed, and you've mixed tabs and spaces.
The AttributeError: module 'pandas' has no attribute 'DataFrame' occurs when you misspell DataFrame or override the pandas import. You can solve this error by ensuring your variables and python scripts are not named after pandas. Generally, do not name variables or scripts after existing Python libraries.
There are one or two issues with the code you posted (mainly to do with initializing the HTMLParser
properly).
Try running this amended version of your script:
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
# initialize the base class
HTMLParser.__init__(self)
def read(self, data):
# clear the current output before re-use
self._lines = []
# re-set the parser's state before re-use
self.reset()
self.feed(data)
return ''.join(self._lines)
def handle_data(self, d):
self._lines.append(d)
def strip_tags(html):
s = MLStripper()
return s.read(html)
html = """Python's <code>easy_install</code>
makes installing new packages extremely convenient.
However, as far as I can tell, it doesn't implement
the other common features of a dependency manager -
listing and removing installed packages."""
print strip_tags(html)
This error also appears if you override the reset method in HTMLParser class.
In my case I had added a method named reset for some other functionality and discovered that while Python does not tell you there is a problem with doing this (nor was there any indication I was overriding anything), it breaks the HTMLParser class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With