如何在python中的字符串中插入全局变量和局部变量

如何在python中的字符串中插入全局变量和局部变量,python,global-variables,local-variables,Python,Global Variables,Local Variables,我想创建一个字符串,在其中同时替换全局变量和局部变量。下面显示的代码给了我一个错误。KeyError:“表” TABLE = my_table def get_data(): data_size = 10 print "get %(data_size)s rows from the table %(TABLE)s" %locals() %globals() 我希望代码打印以下内容: get 10 rows from the table my_table 有人知道如何做到这一点

我想创建一个字符串,在其中同时替换全局变量和局部变量。下面显示的代码给了我一个错误。KeyError:“表”

TABLE = my_table
def get_data():
    data_size = 10
    print "get %(data_size)s rows from the table %(TABLE)s" %locals() %globals()
我希望代码打印以下内容:

get 10 rows from the table my_table

有人知道如何做到这一点吗?提前谢谢

您需要这样打印:

TABLE = "my_table"
def get_data():
    data_size = 10
    print "get %s rows from the table %s"%(data_size, TABLE)
输出:

从表my_表中获取10行


如果要完全按照现在的方式使用格式字符串,则需要将精确映射指定为字典,如下所示:

mapping = {'data_size' : locals()['data_size'], 'TABLE' : globals()['TABLE']}
print "get %(data_size)s rows from the table %(TABLE)s" % mapping
或者,更简单地说

mapping = {'data_size' : data_size, 'TABLE' : TABLE}
现在,将映射传递到字符串中,如下所示:

mapping = {'data_size' : locals()['data_size'], 'TABLE' : globals()['TABLE']}
print "get %(data_size)s rows from the table %(TABLE)s" % mapping
这将使您从表my_表中获得10行


您收到的TypeError是因为%…s希望在传递给字符串的args格式中指定相同的key:value映射。

打印从表%s%data\u size中获取%s行,TABLE@cᴏʟᴅsᴘᴇᴇᴅ 这对我不起作用。I get TypeError:格式需要mapping@PulkitBansal是的,我的错。语法并不完美,但大致上是这样的。看看我的答案。这是一个有用的答案。还有什么方法可以在字符串中写入变量名data_size和TABLE?因为随着字符串变得长而复杂,很难将变量按正确的顺序排列。局部变量['data\u size']和全局变量['TABLE']可以直接写入数据大小TABLE@khelwood谢谢,编辑。最初保留这一点是因为它似乎与OP使用本地人/全球人的目标同义。谢谢@COLDSPEED,这很有帮助。“我不知道本地人和全球人基本上都是字典。”普基班萨尔很乐意帮忙。的确如此。记住,如果答案有帮助,你可以随时标记为接受