2010-07-29 130 views
10

由于在python中将变量[i]引入到字符串中。将变量值插入python中的字符串

例如看下面的脚本,我只想给一个图像命名,例如geo [0]。 Tiff ...到地理[i]。 tiff,或者如果您使用会计师,我可以替换价值链的一部分来生成计数器。

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

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

感谢您的回答

回答

10
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) 

执行字符串格式化操作。调用此方法的字符串可以包含文字 文本或由大括号{}分隔的替换字段 。每个替换字段 包含 位置参数的数字索引或 关键字参数的名称。返回 字符串的副本,其中每个替换字段 被字符串 替换为相应参数的值。

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

见格式字符串的语法的,可以在 格式字符串指定的各种格式 选项的说明。

字符串格式化的这种方法是在Python 3.0的新标准,和 应首选在字符串 格式化操作在新的代码格式描述的% 。

New in version 2.6. 
+0

这些天''格式'认为比我的解决方案pythonic? – 2010-07-29 22:08:13

+0

是的,它是官方认可的,而你的解决方案不是,iirc。没有责备:) – 2010-07-29 22:11:34

+1

@orangeoctopus,仅适用于Python2.6 + http://docs.python.org/library/stdtypes.html#str.format – 2010-07-29 22:14:45

12

可以使用运营商%注入字符串转换成字符串:

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

这将给:

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

你也可以做整数与%d

"geo%d.tif" % 3 # geo3.tif 
-2

你也可以这样做:

name = input("what is your name?") 
print("this is",+name) 
+3

其实,这不起作用..你是不是指'print(“这是”+ name)'? – Lisa 2016-02-25 15:33:57

0

使用

var = input("Input the variable") 
print("Your variable is " + var) 

注意var必须是一个字符串,如果不是,将其转换为与var = str(var)的字符串。

例如

var = 5 # This is an integer, not a string 
print("Var is " + str(var)) 

这个解决方案是最简单的读/理解,对于初学者这样更好,因为它只是简单的字符串连接。