在Python字符串替换或替代不起作用(Replacing or substituting in a

2019-10-17 22:52发布

我几乎可以解决一切都要感谢我的Python问题的这个伟大的网站,但现在我在一个点,我需要更多的和具体的帮助。

我有一个字符串从它看起来像这样一个数据库中获取:

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

字符串基本上是纯C代码Unix行结尾,并认为在某些特定变量的值由东西从一个Qt UI别的聚集更换的方式来处理。

我尝试了以下做更换:

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

其中“led_coeffs”是namedtuple并且它的值是一个整数。 我也试过这样:

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

然而,这两种方法不工作,我不知道为什么。 最后,我希望能在这里得到一些信息。 也许整个的做法是不对的,如何实现在一个良好的方式更换任何暗示的高度赞赏。

谢谢,本

Answer 1:

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属性...



文章来源: Replacing or substituting in a python string does not work