[Tutor] comparing strings
Dave Angel
davea at ieee.org
Thu Feb 24 11:56:21 CET 2011
On 01/-10/-28163 02:59 PM, Edward Martinez wrote:
> On 02/23/11 19:29, Corey Richardson wrote:
>> On 02/23/2011 10:22 PM, Edward Martinez wrote:
>>> Hi,
>>>
>>> I'm new to the list and programming.
>>> i have a question, why when i evaluate strings ie 'a'> '3' it reports
>>> true, how does python come up with that?
>> Welcome! As far as I know, it compares the value of the ord()'s.
>>
>>>>> ord('a')
>> 97
>>>>> ord('3')
>> 51
>>
>> This is their number in the ASCII system. You can also do this:
>>
>>>>> chr(97)
>> 'a'
>>>>> chr(51)
>> '3'
>>
A string is effectively an array of characters. Each one may be ASCII
or Unicode or other, depending partly on your Python version.
Each character has an ord() between 0 and 255, or between 0 and 65535.
Except for some values below 0x20 (eg. tab, newline), these are
printable. So you can make a chart for your own system with a fairly
simple loop.
Comparison is done left to right on the two strings, comparing one
character at a time. If there are no control characters, this
approximates what a dictionary order would do. But notice that all the
capital letters appear before any of the lowercase characters. And that
if you have accented characters, they're generally nowhere near the
unaccented versions.
One other point: if one string begins with all the characters in the
other (eg. 'cat' and 'catatonic'), the longer string is then considered
"greater".
DaveA
More information about the Tutor
mailing list