化学思想与计算机的碰撞——字符串的查找与修改

问题提出

        首先声明!我是个计算机小白。

        最近打算自己做个简易的C++-Py翻译器。

问题来了。现在有一段布尔运算式,其中,!为非,!=为不等。现在需要把“!”转换为“not”,而“!=”不要转换,不然Python语法就不对了。怎么实现呢?

化学知识的灵感

在有机化学的化学合成中,有一种做法叫“官能团的保护”。说得通俗一点,就是在合成的过程中,先将某个容易被变化(但是我们不想让它变化)的部分先反应掉,在一系列反应之后再通过反应把它转化回来。(参考:《普通高中教科书 人教版 化学 选修3 有机化学基础》)

用符号表示:R-F→R-F'→……→R'-F'→R'-F。(R、R'表示某基团,F、F'表示官能团)

在这个问题中,“!”就是R,“!=”就是F。在这个思维方法的引领下,我们需要把F变成不会被“反应掉”的F',然后对“!”进行修改。

解决

s = s.replace("!=", "$$$")     #F -> F'
s = s.replace("!", " not ")    #R -> R'
s = s.replace("$$$", "!=")     #F' -> F

其中,“$$$”可以是任何一个特殊的字符串。

于是,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值