如果已经保存为str对象,是否有一个很好的标准可以将数据添加到字符串中

时间:2014-07-11 18:54:06

标签: python excel python-2.7

最新更新和说明: 对于那些真正不明白为什么要这样做的人,我在Python中使用了Excel API。 Python脚本将从Excel电子表格中提取字符串以进行自动化测试,并在完成后将结果返回到Excel。我也会更新一个数据库,但由于我们在讨论中遇到的困难,我已经放弃了这个想法以及对这个项目的Excel需求。

例如,我知道你可以......

my_string = "driver.find_element_by_id(%s).click()" % foo

但是如何将数据应用于已分配的字符串。什么是Pythonic的方式......

my_string = 'driver.find_element_by_id(%s).click()'

new_string = my_string % foo

UPDADED:玩引号让我陷入困境。不完全是我想要的最终产品,但这是现在的工作......

这些str对象从另一个源引入(因此在分配变量之前无法连接)...

a = "driver.find_element_by_id('%s').click()"
sel_selector = "foo"

my_string = a % sel_selector
eval(my_string)

我从Excel电子表格中捕获数据的大多数逻辑都被忽略了,但这就是它变得如此复杂的原因。它是一个从电子表格中提取数据的脚本,因此我们可以进行自动回归测试来更新工作表。

1 个答案:

答案 0 :(得分:1)

使用format()功能,您可以做到这一点,但我不知道它是否与您正在使用的任何功能兼容:

>>> a = "hello {}"
>>> a
'hello {}'
>>> a.format("dave")
'hello dave'

它也适用于%格式,但我觉得它不那么漂亮:)。

>>> a = "hello %s"
>>> a
'hello %s'
>>> a % "dave"
'hello dave'

阅读完评论后,我可以使用exec执行您想要的操作,如下例所示:

>>> command = "lst = [i**2 for i in range({})]"
>>> exec command.format(10)  #Performs identically to lst = [i**2 for i in range(10)]
>>> lst
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> exec command.format(4)   #Performs identically to lst = [i**2 for i in range(4)]
>>> lst
[0, 1, 4, 9]

有关完整说明,请参阅this post