免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2785 | 回复: 9
打印 上一主题 下一主题

求一段代码,文本替换,将前缀变成后缀 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-21 21:11 |只看该作者 |倒序浏览
本帖最后由 amber112 于 2012-02-22 10:37 编辑

将一个文本中类似chinaunix.a1,chinaunix.ay1        ,chinaunix.ad2        ,chinaunix.a3o        ,chinaunix.a4的文本,替换成ay1.chinaunix        ,ad2.chinaunix        ,a3o.chinaunix,a4.chinaunix       

虽然知道re,但怎奈眼高手低、任务急,几百个文件中的类似文本要替换 ,问题或许有些简单,轻拍,谢谢

论坛徽章:
1
双子座
日期:2013-10-17 00:46:45
2 [报告]
发表于 2012-02-22 00:19 |只看该作者
回复 1# amber112
  1. sed -r -i.bak 's/(\w+)\.(\w+)/\2.\1/g' *
复制代码

论坛徽章:
2
拜羊年徽章
日期:2015-03-03 16:15:4315-16赛季CBA联赛之同曦
日期:2018-07-25 19:57:32
3 [报告]
发表于 2012-02-22 10:00 |只看该作者
  1. #!/usr/bin/env python

  2. import os
  3. import re
  4. import shutil

  5. path = "d:\\test\\"

  6. for i in os.listdir(path):
  7.     a = re.compile('^chinaunix.')
  8.     c = a.sub("",i)
  9.     shutil.move(path + i, path + c + ".chinaunix")
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-02-22 10:40 |只看该作者
回复 3# Mylib


我想要的是修改文本文件中的字符串

论坛徽章:
0
5 [报告]
发表于 2012-02-22 12:12 |只看该作者
sed不是很简单吗,为什么不用?是在windows上?

论坛徽章:
0
6 [报告]
发表于 2012-02-22 13:33 |只看该作者
回复 5# askandstudy


    是的

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
7 [报告]
发表于 2012-02-22 14:10 |只看该作者
用re的替换就行了,其他代码LZ自己搞定了,读写文件总没问题吧?
>>> import re
>>> s = '类似chinaunix.a1,chinaunix.ay1'
>>> print re.sub(r'chinaunix\.(\w+)', r'\1.chinaunix', s)
类似a1.chinaunix,ay1.chinaunix

论坛徽章:
0
8 [报告]
发表于 2012-02-22 14:14 |只看该作者
本帖最后由 askandstudy 于 2012-02-22 14:17 编辑
  1. #!/usr/bin/env python
  2. #coding:utf-8

  3. import re

  4. filelines='''chinaunix.a1 ,
  5. chinaunix.ay1        ,
  6. chinaunix.ad2        ,
  7. chinaunix.a3o        ,
  8. chinaunix.a4'''

  9. def main(filelines):
  10.     restr=r'(\w+)\.(\w+)(.*)'
  11.     replstr=r'\2.\1\3'
  12.     for it in filelines.split('\n'):
  13.         print 'before replace:',it
  14.         ret=re.sub(restr,replstr,it)
  15.         print 'after replace:',ret
  16.         print '='*50

  17. if __name__ == '__main__':
  18.     main(filelines)
  19.     print 'done'
  20.    
复制代码

论坛徽章:
0
9 [报告]
发表于 2012-02-22 16:17 |只看该作者
  1. >>> ".".join("chinaunix.ad2".split(".")[::-1])
  2. 'ad2.chinaunix'
复制代码

论坛徽章:
0
10 [报告]
发表于 2012-02-23 11:44 |只看该作者


果然,re一句就搞定了,之前不知道如何引用匹配到的元组
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP