免费注册 查看新帖 |

Chinaunix

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

期待拍板的python文件操作小程序(共25行) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-25 11:50 |只看该作者 |倒序浏览
刚刚学python,哦,深深的被其大道至简的哲学所迷住了。刚刚好要做点小功能,就现学现用了。
    需求是把一篇文章里面所有出现的NAME或name替换成一系列的数字0, 1, 2, 3......并把被替换的行输出到一个新文件里面,同时也被没有被替换的行另外存到一个文件里面。感觉这么简单的功能还有25行,不够pythonic,期待有简化的建议。谢谢:)
  1. f = open('test.txt')
  2. f_new = open('new.txt', 'a')
  3. f_no = open('no.txt', 'a')
  4. count = 0
  5. while True:
  6.     line = f.readline()
  7.     if len(line) == 0:
  8.         break
  9.     if line.rfind('NAME') >= 0:
  10.         new_line = line.replace('NAME', str(count))
  11.         f_new.write(new_line)
  12.         print(new_line, end='')
  13.         count += 1
  14.     elif line.rfind('name') >= 0:
  15.         new_line = line.replace('name', str(count))
  16.         f_new.write(new_line)
  17.         print(new_line, end='')
  18.         count += 1
  19.     else:
  20.         f_no.write(line)


  21. f_new.close()
  22. f_no.close()
  23. f.close()
复制代码

论坛徽章:
0
2 [报告]
发表于 2009-08-25 12:26 |只看该作者
要是同一行出现了两次NAME呢?count变量不就是有错了么

偶喜欢正则,就可以省略一个elif了

论坛徽章:
0
3 [报告]
发表于 2009-08-25 14:17 |只看该作者
我拍下试试

f, f_new, f_no = open('test.txt'), open('new.txt', 'a'), open('no.txt', 'a')
count = 0
def c():
        global count;count += 1
        return count
for line = f.readline():
    if len(line) == 0:break
    if 'name' in line or 'NAME' in line:
                newlist = []
                [listline.extend(str1.split('NAME')) for str1 in line.split('name')]
                newline = ''.join([str2+str(c()) for str2 in listline[:-1]] + listline[-1])
                print newline
                f_new.write(newline)
    else:
        f_no.write(line)
f_new.close(),f_no.close(),f.close()
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP