[SciPy-dev] [SciPy-user] efficiently importing ascii data
Travis Oliphant
oliphant at ee.byu.edu
Sat Nov 19 23:53:51 EST 2005
Darren Dale wrote:
>Hi Travis, All,
>
>
>
>>>The other thing that needs to be done is that string (and unicode)
>>>arrays need to convert to the numeric types, easily. This would let you
>>>read in a string array and convert to numeric types quite cleanly.
>>>Right now, this doesn't work simply because the wrong generic functions
>>>are getting called in the conversion routines. This can and should be
>>>changed, however. The required code to change is in arraytypes.inc.src.
>>>
>>>I could see using PyInt_FromString, PyLong_FromString,
>>>PyFloat_FromString, and calling the complex python function for
>>>constructing complex numbers from a string. Code would need to be
>>>written to fully support Long double and complex long double conversion,
>>>but initially they could just punt and use the double conversions.
>>>
>>>Alternatively, sscanf could be called when available for the type, and
>>>the other approaches used when it isn't.
>>>
>>>Anybody want a nice simple project to get themselves up to speed with
>>>the new code base :-)
>>>
>>>
>>I'll look into it (after hours, just started a new job). I haven't worked
>>much with C or wrapping C, and I need to learn sometime.
>>
>>
>
>Now that I have studied the source, I'm not sure I am up to this. Between
>trying to learn C and wade through the (what appears to me) extremely
>abstracted source code, I might as well deciphering Linear A.
>
>
If you don't already know C, then the extra code-generation comments
could be more confusing.
The code generation itself is very simple. It's just a Python program
that takes a .src file and constructs actual c-files by repeating code
between tags substituting for names defined in the /**begin repeat**/
header.
For example:
/**begin repeat
#name=mine,yours,ours#
#num=1,2,3#
**/
this gets repeated as @name@ and @num@
/**end repeat**/
would produce a file with the contents:
this gets repeated as mine and 1
this gets repeated as yours and 2
this gets repeated as ours and 3
This is a simple way to produce lots of similar code very quickly and
maintain it more easily.
-Travis
More information about the SciPy-Dev
mailing list