Board logo

标题: [原创代码] python正则表达式一列文本转成三列.py [打印本页]

作者: 依山居    时间: 2015-11-22 14:52     标题: python正则表达式一列文本转成三列.py

  1. """
  2. python正则表达式一列文本转成三列.py
  3. 依山居 8:18 2015/11/12
  4. 总结,我自己生成了百万行来测试,文本文件8M大,内容为1-999999
  5. 运行耗时1秒左右
  6. """
  7. print("运行中..."*3)
  8. import re
  9. import time
  10. start=time.time()
  11. out=open("out.txt","w+")
  12. reg=re.compile(r"(.*)\n(.*)\n(.*)\n")
  13. with open("a.txt") as f:   
  14.     txt=f.read()
  15.     f.close()
  16. result=re.sub(reg,r"\1  \2  \3\n",txt)
  17. #print(result)
  18. out.write(result)
  19. out.close()
  20. end=time.time()
  21. pt=end-start
  22. print("运行耗时:",pt)
  23. try:
  24.     input("按回车退出")
  25. except SyntaxError:
  26.     pass
复制代码

作者: codegay    时间: 2016-2-24 07:10

  1. """
  2. 一列数字转成N列.py
  3. 2016年2月24日 05:45:58 codegay
  4. """
  5. #生成测试数据,得到a.txt为1列1-999的内容
  6. with open("a.txt","w+") as f:
  7.     [f.write(str(r).zfill(4)+"\n") for r in range(1,999)]
  8. #一列数字转成N列.py
  9. N=50
  10. with open("a.txt","r+") as f:
  11.     #脱掉数据后面的换行符,如果能被N整除则保留
  12.     txt=f.readlines()
  13.     sn=[txt[r] if (r>1 and (r+1)%N==0) else txt[r].replace("\n",",") for r in range(0,len(txt)) ]
  14.     print(sn)
  15.     #指针回到文件头部清空文件
  16.     f.seek(0)
  17.     f.truncate()
  18.     f.writelines(sn)
  19.    
  20.    
复制代码

作者: codegay    时间: 2016-3-2 01:17

  1. """
  2. 一列数字转成N列2.py
  3. http://www.oschina.net/question/2400361_2152116
  4. 2016年3月1日 23:49:33 codegay
  5. 这个问题本质等于问如何把一个列表或者一个字符串分成N份
  6. 参考http://blog.topspeedsnail.com/archives/1469
  7. """
  8. #生成测试数据,得到a.txt为1列1-999的内容
  9. with open("a.txt","w+") as f:
  10.     [f.write(str(r).zfill(4)+"\n") for r in range(1,999)]
  11. #一列数字转成N列.py
  12. N=50
  13. txt=[r.rstrip("\n") for r in open("a.txt").readlines()]
  14. re=[txt[r:r+N] for r in range(0,len(txt),N)]
  15. f=open("out.txt","w+")
  16. [f.write(','.join(r)+"\n") for r in re]   
  17. f.close()
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2