newbie question: if var1 == var2:

MRAB google at mrabarnett.plus.com
Thu Dec 11 21:11:17 EST 2008


John Machin wrote:
> On Dec 12, 11:39 am, MRAB <goo... at mrabarnett.plus.com> wrote:
>> Jason Scheirer wrote:
>>> On Dec 11, 3:49 pm, John Machin <sjmac... at lexicon.net> wrote:
>>>> On Dec 12, 10:31 am, "Rhodri James" <rho... at wildebst.demon.co.uk>
>>>> wrote:
>>>>> On Thu, 11 Dec 2008 19:49:23 -0000, Steve Holden <st... at holdenweb.com>  
>>>>> wrote:
>>>>>> Kirk Strauser wrote:
>>>>>>> At 2008-11-29T04:02:11Z, Mel <mwil... at the-wire.com> writes:
>>>>>>>> You could try
>>>>>>>> for item in fname:
>>>>>>>>     item = item.strip()
>>>>>>> This is one case where I really miss Perl's "chomp" function.  It  
>>>>>>> removes a
>>>>>>> trailing newline and nothing else, so you don't have to worry about  
>>>>>>> losing
>>>>>>> leading or trailing spaces if those are important to you.
>>>>>> ... and it's so hard to write
>>>>>>      item = item[:-1]
>>>>> Tsk.  That would be "chop".  "chomp" would be
>>>>>      if item[-1] == '\n':
>>>>>          item = item[:-1]
>>>> Better:
>>>> if item and item[-1] == '\n':
>>>>     return item[:-1]
>>>> return item
>>> Best:
>>> return item \
>>>        if not (item and item.endswith('\n')) \
>>>        else item[:-1]
>>> Though really you should be using item.rstrip()
>> Why not just:
>>
>>      item[:-1] if item.endswith('\n') else item
> 
> Some possible reasons:
> * because you might be supporting old versions of Python (my offering
> runs on 1.5)
> * because the "<true_value> if <condition> else <false_value>" syntax
> gives you the screaming dry Edgar Britts
> * because you'd prefer not to have the overhead of a method lookup and
> method call
> 
OK:

     if item[-1:] == '\n':
         return item[:-1]
     return item



More information about the Python-list mailing list