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