免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 吴秦
打印 上一主题 下一主题

如何编写Python脚本替换文件中的多行字符? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-08-26 22:57 |只看该作者
我来解释一下 月吻清风  的吧  

   1. #!/usr/bin/env python
   2. import os,re
   3.

   4. f = file("test","r").read()
# 这个是读文件
   5. pat = re.compile(r'/\*(.*?)\*/',flags=20)
#  /\*(.*?)\*/  这个是匹配  注释的正则  (.*?)  是非贪婪匹配   
   6. count = re.sub(pat,'xxx',f)
#  这个地方就是用正则替换了
   7. print count

论坛徽章:
0
12 [报告]
发表于 2010-08-27 10:53 |只看该作者
本帖最后由 月吻清风 于 2010-08-27 11:12 编辑
我来解释一下 月吻清风  的吧  

   1. #!/usr/bin/env python
   2. import os,re
   3.

   4. f = ...
notedit 发表于 2010-08-26 22:57



嗯 基本就是这个意思 我这个只是没有写入文件 你想写入 write就可以 我只是给你个实现的方法 很简单的事情何必搞的那么复杂
既然要对文本进行替换处理 那么正则是最好的选择 当然要根据实际情况 调用re模块来处理

首先调用re模块
假设你的文件为test  那么read()
利用compile()函数进行正则r'/\*(.*?)\*/'预编译 返回一个对象 定义它为pat
然后把文件f中所有匹配预编译正则表达式pat的地方替换为xxx
打印替换结果
当然 你也可以直接将替换结果写入文件中 至于怎么写入这个就不用多说了吧?

论坛徽章:
0
13 [报告]
发表于 2010-08-27 15:28 |只看该作者
  1. #!/usr/bin/env python

  2. import re

  3. filename = 'source.c'
  4. text = open(filename).read()

  5. r = re.compile(r'/\*.*?\*/', re.DOTALL)
  6. cr= re.compile('Copyright')

  7. def sub_copyright(m):
  8.     mo = cr.search(m.group())
  9.     if mo:
  10.         return '/*xxx*/'
  11.     else:
  12.         return m.group()

  13. result = r.sub(sub_copyright, text)
  14. open('result.c', 'w').write(result)
复制代码

论坛徽章:
0
14 [报告]
发表于 2010-08-29 17:28 |只看该作者
回复 12# 月吻清风


    请去http://bbs.chinaunix.net/viewthread.php?tid=1775777&extra=,回复领分

论坛徽章:
0
15 [报告]
发表于 2010-08-29 17:29 |只看该作者
回复 11# notedit


    请去http://bbs.chinaunix.net/viewthread.php?tid=1775778&extra=,回复领分
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP