给定一个程序,程序中有许多函数,比如,funcA,funcB,现在,如何在生成的函数中插入一个logger()语句?

这里用一个solidity程序做例子

pragma solidity ^0.4.0;

contract SimpleStorage {
uint storedData; // 声明一个类型为 uint (256位无符号整数)的状态变量,叫做 storedData function set(uint x) public {
storedData = x; // 状态变量可以直接访问,不需要使用 this. 或者 self. 这样的前缀
} function get() public view returns (uint) {
return storedData;
}
}

在执行get()函数中插入一条语句,"//insert example"字符串。如何办到?

思路:

1.用r+方式打开文本文件,
2. for line in
3. if "xxx" in line 如果xxx字符串在 该行中
4. 在该行后加入一行所需字符串, 使用字符串拼接。比如 line = line + " \n xxxxx",便可插入一行。

如果给你的sol代码全部被写成了一行,且换行符全部用\n字符串表示,要如何进行插入呢?

一些基础知识

r+方法是可读可写,

a方法是追加, 一般生成新的文件,用a模式(add)。

还有哪些常用模式?

python3打开文件

python2中用unicode方式格式字符串的方式是unicode("sss","utf-8"),

但是在python3中已经弃用,

NameError: name 'unicode' is not defined # python3中unicode()已经弃用而只使用str()了。

参考资料

python做编译器 https://www.cnblogs.com/lrysjtu/p/6256493.html

python替换所有符合要求的字符串

第一种方法是python的字符串替换函数replace.

a = "i love love love you"
newstr = a.replace("love", "hate")

替换之后,所有的love都会变为hate,因此这是全部替换。

replace函数并不总是成功。

https://www.jb51.net/article/164028.html

replace第三个参数是次数,如果是缺省,则是替换所有。

第二种方法是正则表达式,python正则表达式标准库re.

用法:

import re
a = 'i love love love you'
regex = re.compile('love') # 写入正则表达式
newstr = regex.sub('hate', a) #sub是正则替换方法,通过正则表达式匹配到字符串进行替换,第二个参数是原字符串
假设有字符串 "aasdfasef\\nsfewf\\n",现在要将\\n处理为\n,并且在处理完成后在某一行插入一行命令。
使用solidity代码处理。 将所有的\\n替换为\n,然后再将solidity的事件桩插入,之后再将\\n变回\n
使用正则表示式的方法,用\n替换\\n的方法行不通。原因是没有正确识别正则表示式里面的'\'。最后发现是没有在 '\\n'加r,即 r'\\n' 其实还可以通过用python字符串切分的方式,先将该字符串按照\\n切分.然后再逐行输出。但是效率太低下了。

python字符串前加r的含义:

将\变为普通字符而不是转义符号。在python3中,字符串即使是\\n也仍然无法解析,而最好在字符串之前加上r,表明\不是转义字符。

python正则表示详解https://www.jb51.net/article/166072.htm

最新文章

  1. 用Merge来改写相关更新的例子
  2. c#设计模式之简单工厂
  3. ubuntu上怎么设置默认python命令是执行python3而不是python2
  4. 第三百五十一天 how can I 坚持
  5. linux源代码阅读笔记 高速缓冲区管理
  6. STM32学习笔记——FSMC 驱动大容量NAND FLASH [复制链接]
  7. 通过Microsoft Azure服务设计网络架构的经验分享
  8. java SWT嵌入IE,SafeArray .
  9. mysql之 binlog维护详细解析(开启、binlog相关参数作用、mysqlbinlog解读、binlog删除)
  10. scrapy_随机user-agent
  11. ABP官方文档翻译 2.6 定时
  12. [Python Study Notes]实现对鼠标控制
  13. 获取页面所有a标签href
  14. matplotlib使用
  15. npm常用命令学习(npm install -D,semver版本规范, npm进行版本管理的最佳实践用法)
  16. springboot学习三:整合jsp
  17. [CF896C]Willem, Chtholly and Seniorious(珂朵莉树)
  18. HTTP基本原理(转)
  19. Update 20180317
  20. Java基础组件快速入门

热门文章

  1. GUI容器之布局管理器
  2. client-go实战之四:dynamicClient
  3. shell逐行读取文件内容
  4. poll?transport=longpoll&connection...烦人的请求c
  5. 排查dubbo接口重复注销问题,我发现了一个巧妙的设计
  6. 样式和模板快速入门Style,Template
  7. Maven专题2——聚合与继承
  8. Apache Dolphin Scheduler - Dockerfile 详解
  9. 【noip1998】题解:2的幂次方
  10. Nacos注册中心和配置中心流程原理