String 替换或替换python字符串不起作用

String 替换或替换python字符串不起作用,string,python-2.7,replace,String,Python 2.7,Replace,多亏了这个很棒的网站,我几乎可以解决所有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.re

多亏了这个很棒的网站,我几乎可以解决所有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_系数”是一个命名的整数,其值是一个整数。我也试过:

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))
然而,这两种方法都不起作用,我不知道为什么。最后,我希望在这里得到一些信息。可能整个方法都不正确,任何关于如何以良好方式实现替换的提示都是高度赞赏的

谢谢, Ben

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)

要在您的namedtuple上自动查找属性…

非常感谢。多么愚蠢的错误啊。还感谢模板示例。我会尽快测试的。