Eval (was Re: Question about using python as a scripting language)

Brendon Towle btowle at carnegielearning.com
Wed Aug 9 11:51:19 EDT 2006


On 9 Aug 2006, at 11:04 AM, Chris Lambacher wrote:

> How is your data stored? (site was not loading for me).


In the original source HTML, it's like this (I've deleted all but the  
beginning and the end of the list for clarity):

var table_body = [
["ATVI", "Activision, Inc.",12.75,0.150000,1.19,2013762,0.04,"N","N"]
,["YHOO", "Yahoo! Inc.",27.7,0.260000,0.95,6348884,0.21,"N","N"]
];

> More sophisiticated situations (like nested lists) may require  
> something like pyparsing.

I could do that, or I could do something like the re.* trick  
mentioned by another poster. But, doesn't it offend anyone else that  
the only clean way to access functionality that's already in Python  
is to write long complicated Python code? Python already knows how to  
extract a list object from a string; why should I have to rewrite that?

B.


> On Wed, Aug 09, 2006 at 10:23:49AM -0400, Brendon Towle wrote:
>>    Slawomir Nowaczyk noted:
>>
>>      #> Heck, whenever *is* it OK to use eval() then?
>>      eval is like optimisation. There are two rules:
>>      Rule 1: Do not use it.
>>      Rule 2 (for experts only): Do not use it (yet).
>>
>>    So, that brings up a question I have. I have some code that  
>> goes out to a
>>    website, grabs stock data, and sends out some reports based on  
>> the data.
>>    Turns out that the website in question stores its data in the  
>> format of a
>>    Python list ([1]http://quotes.nasdaq.com/quote.dll? 
>> page=nasdaq100, search
>>    the source for "var table_body"). So, the part of my code that  
>> extracts
>>    the data looks something like this:
>>        START_MARKER = 'var table_body = '
>>        END_MARKER = '];'
>>    def extractStockData(data):
>>        pos1 = data.find(START_MARKER)
>>        pos2 = data.find(END_MARKER, pos1)
>>        return eval(data[pos1+len(START_MARKER):END_MARKER])
>>    (I may have an off-by-one error in there somewhere -- this is  
>> from memory,
>>    and the code actually works.)
>>    My question is: what's the safe way to do this?
>>    B.
>>    --
>>    Brendon Towle, PhD
>>    Cognitive Scientist
>>    +1-412-690-2442x127
>>    Carnegie Learning, Inc.
>>    The Cognitive Tutor Company ®
>>    Helping over 375,000 students in 1000 school districts succeed  
>> in math.
>>
>> References
>>
>>    Visible links
>>    1. http://quotes.nasdaq.com/quote.dll?page=nasdaq100
>
>> -- 
>> http://mail.python.org/mailman/listinfo/python-list

-- 
Brendon Towle, PhD
Cognitive Scientist
+1-412-690-2442x127
Carnegie Learning, Inc.
The Cognitive Tutor Company ®
Helping over 375,000 students in 1000 school districts succeed in math.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20060809/abd838e6/attachment.html>


More information about the Python-list mailing list