1

多亏了这个很棒的网站,我几乎可以解决我所有的 python 问题,但是,现在我需要一些更多和具体的帮助。

我有一个从数据库中获取的字符串,如下所示:

u'\t\t\tcase <<<compute_type>>>:\n\t\t\t\t{\n\t\t\t\t\tif (curr_i <= 1) Messag...

该字符串基本上是带有 unix 行结尾的纯 c 代码,并且应该以某种特定变量的值被从 Qt UI 收集的其他内容替换的方式进行处理。

我尝试了以下方法来进行替换:

tmplt.replace(u"<<<compute_type>>>", str(led_coeffs.compute_type))

其中 'led_coeffs' 是一个命名元组,它的值是一个整数。我也试过这个:

tmplt = Template(u'\t\t\tcase ${compute_type}:\n\t\t\t\t{\n\t\t\t\t\tif (curr_i <= 1) Messag...)
tmplt.substitute(compute_type = str(led_coeffs.compute_type))

但是,这两种方法都不起作用,我不知道为什么。最后,我希望在这里得到一些输入。也许整个方法是不正确的,任何关于如何以良好方式实现替换的提示都受到高度赞赏。

谢谢,本

4

1 回答 1

0

str.replace(和其他字符串方法)不能就地工作(Python 中的字符串是不可变的) - 它返回一个新字符串 - 您需要将结果分配回原始名称以使更改生效:

tmplt = tmplt.replace(u"<<<compute_type>>>", str(led_coeffs.compute_type))

您还可以发明自己的模板:

import re
print re.sub('<<<(.*?)>>>', lambda L, nt=led_coeffs: str(getattr(nt, L.group(1))), your_string)

在您的命名元组上自动查找属性...

于 2013-04-03T06:18:50.510 回答