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