create a string of variable lenght
Tim Chase
python.list at tim.thechases.com
Sun Jan 31 07:35:31 EST 2010
Tracubik wrote:
> ********************************
> error message of variable lenght
> ********************************
>
> to print the asterisks line i do this:
>
> def StringOfAsterisks(myString):
> asterisksString = "*"
> for i in range(1,len(myString):
> asterisksString += "*"
> print asterisksString
>
> so i create the asterisksString of the lenght i need
>
> There is a better way of creating asterisksString?
well, to make it more pythonic (ignoring camel-case
variable-names for now), I'd just use
print '*' * len(myString)
print myString
print '*' * len(myString)
possibly stashing the resulting asterisksString once:
asterisks_string = '*' * len(my_string)
print asterisks_string
print my_string
print asterisks_string
If I used it in multiple places, I might wrap it in a function
and/or define a "DIVIDER_CHARACTER" constant, something like
DIVIDER_CHARACTER = '*'
def surround(s, divider=DIVIDER_CHARACTER):
d = divider[0]
print d * len(s)
print s
print d * len(s)
surround('hello')
surround('world', '-')
surround('foo', 'xo')
depending on the sort of behavior you want
> the code seem to work for me, but it doesn't work properly if in errorMsg
> there is some "esotic" char like euro char (€):
>
>>>> euro = "€"
>>>> len(euro)
> 3
I suspect you're seeing the byte-representation of your string
with a particular-yet-undisclosed encoding. If it was a unicode
string (a good idea to specify the encoding at the top of your
file), the length should be accurate, so what happens if you
>>> euro = u"€"
>>> len(euro)
? (I don't have ready access to a terminal where I can enter
unicode characters, and you don't display the representation of
the string with
print repr(euro)
so I can steal the byte values to recreate it; but I suspect the
result will correctly be 1).
-tkc
More information about the Python-list
mailing list