[Tutor] string codes

Steven D'Aprano steve at pearwood.info
Tue Nov 26 12:34:14 CET 2013


On Tue, Nov 26, 2013 at 10:19:46AM +0100, spir wrote:

> What is the method to get a code or list of codes inside a string:
> 	s = "abcde"
> 	c = s.code(2)
> 	assert(c == 0x63)
> ?

Use indexing to get the character you want, then ord() to return its 
ordinal value.

ord(s[2])

> === sub compare ===
> 
> Is there a method to compare a substring, without building a substring from 
> the big one? Like startswith or endswith, but anywhere inside the string?
> 	test = s[1, -1] == "bcd"	# no!, builds a substring
> 	test = s.sub_is(1, -1, "bcd")	# yes! what I'm searching

The word I think you want is "view". A view is a look inside another 
object without copying the part that you want.

I think that views would be useful for *very large strings*, but very 
large probably means a lot larger than you might think. For small 
strings, say under a few hundred or perhaps even thousand characters, 
making a copy of the substring will probably be faster.

I say "probably", but I'm only guessing, because strings in Python don't 
have views. (Perhaps they should?)

So for the time being, don't worry about it. Copying a substring in 
Python is very efficient, the simplest way is to just compare the 
substring directly:

s[1:-1] = "bcd"

Take note that a slice (substring) of a string uses a colon : and not a 
comma.


-- 
Steven


More information about the Tutor mailing list