tags:

views:

50

answers:

2

hello, my question is:

As introduces a variable [i] into a string in python.

For example look at the following script, I just want to be able to give a name to the image, for example geo [0]. Tiff ... to geo [i]. tiff, or if you use an accountant as I can replace a portion of the value chain to generate a counter.

    data = self.cmd("r.out.gdal in=rdata out=geo.tif")

    self.dataOutTIF.setValue("geo.tif")

thanks for your answers

+4  A: 

You can use the operator % to inject strings into strings:

"first string is: %s, second one is: %s" % (str1, "geo.tif")

This will give:

"first string is: STR1CONTENTS, second one is geo.tif"

You could also do integers with %d:

"geo%d.tif" % 3   # geo3.tif
orangeoctopus
+3  A: 
data = self.cmd("r.out.gdal in=rdata out=geo{0}.tif".format(i))
self.dataOutTIF.setValue("geo{0}.tif".format(i))
str.format(*args, **kwargs)

Perform a string formatting operation. The string on which this method is called can contain literal text or replacement fields delimited by braces {}. Each replacement field contains either the numeric index of a positional argument, or the name of a keyword argument. Returns a copy of the string where each replacement field is replaced with the string value of the corresponding argument.

>>> "The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'

See Format String Syntax for a description of the various formatting options that can be specified in format strings.

This method of string formatting is the new standard in Python 3.0, and should be preferred to the % formatting described in String Formatting Operations in new code.

New in version 2.6.
gnibbler
These days is `.format` considered more pythonic than my solution?
orangeoctopus
Yes, it is officially endorsed, and your solution is not, iirc. No blame attaches :)
Blue Peppers
@orangeoctopus, Only for Python2.6+ http://docs.python.org/library/stdtypes.html#str.format
gnibbler
Thanks! I'll start using this.
orangeoctopus