a couple of newbie questions

Joseph Paish jpaish at freenet.edmonton.ab.ca
Fri Mar 21 18:41:17 CET 2003


In article <slrnb7ls8i.dvv.rmunn at localhost.localdomain>, "Robin Munn" <rmunn at pobox.com> wrote:

> Joseph Paish <jpaish at freenet.edmonton.ab.ca> wrote:
>> i am in the process of converting a perl script to python and have a couple of questions :
>> 
>> --- 1.  is there a way to comment out a large block of code in python? the reason i ask is that i
>> would like to comment out the entire perl script and convert it piece by piece into python,
>> uncommenting each function as it is converted so i can test if it does what i want.
> 
> You could enclose blocks of code in triple-quote characters:
> 
> """ like this...
>     def foo(bar):
>         return bar+1
> """
> 
> Triple-quotes quote everything, including newlines, until the next triple-quote. Note that
> triple-quotes can be used with both the quote character (") and the apostrophe ('). So if you
> already have triple-quotes of the """ style in the function you're trying to comment out, then you
> can enclose it in '''-style triple quotes.
> 
> See http://www.python.org/doc/current/ref/strings.html for all the formal syntax details of
> triple-quoted strings.
> 
> The other alternative for commenting out large blocks of code is to make an editor macro to insert
> # at the start of every line, but for what you want to do, triple-quoting would be more efficient.
> 
> 
>> --- 2.  is there a way to read a datafile whose records are space separated so that the second
>> field becomes the key to a dictionary and the value portion is the entire record.  for example,
>> 
>> 01/01/2003 abc 1234.56 789.98 12332.98 <<< the original record
>> 
>> the key would be : abc
>> the value would be : 01/01/2003 abc 1234.56 > 789.98 12332.98
>> 
>> i have managed to read the datafile into a list of lists and would like to loop through this
>> collection of records and convert it to a list of dictionaries keyed on the second field.  i have
>> already looked everywhere i can think of, but i haven't had any luck finding how to convert a
>> list of lists into dictionaries.
>> 
>> an alternative would be to bypass the list of lists altogether and populate the dictionary as i
>> read each record.  this would be even simpler.
>> 
>> suggestions?
> 
> Read about the dict() built-in:
> 
>     http://www.python.org/doc/current/lib/built-in-funcs.html
> 
> Basically, you pass it a list of lists, where the inner list has two element: first element is the
> key, second element is the value.
> 
> Or, even better, use something like the following approach:
> 
>     datadict = {}  # Make a new, empty dictionary
>     inputfile = file('inputdata.txt', 'r')
>     for line in inputfile:   # Works in Python 2.2 or later
>         fields = line.split()
>         datadict[fields[1]] = line
>     # Voila, you're done!
> 
> That is by far the simplest way of doing what you're trying to do.
> 
> Notice especially the "fields = line.split()" line. If you're coming from Perl, your instinct will
> probably be to call a function (like split), passing it the string as a parameter. You can do
> things that way in Python if you really want to; most of the functions you'll need are found in
> the string module. But the Pythonic way of doing string operations is to call methods of string
> objects. In Python, strings are objects just like everything else, and can have methods (and
> attributes, if you're feeling insane). So most functions in the string module are deprecated, and
> you should be using methods of string objects to do your string-processing work. See here for the
> string methods available:
> 
>     http://www.python.org/doc/current/lib/string-methods.html
> 
> I hope this helps.
> 
> 
> 

exactly what i was looking for

thank you

joe

ps.  presently using Python 2.0.  hopefully, anything 2.2 specific i should be able to easily
convert using my (older) books as a reference.  for example, i used the following code to do what
you described above :
>>> datadict = {}
>>> filename = "/path/to/filename"
>>> inputfile = open(filename, 'r')
>>> for line in inputfile :
		fields = line.split()
		datadict[fields[1]] = line




More information about the Python-list mailing list