[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1.     newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) or (',' not in txt[r][-1]) else txt[r] for r in range(rn) ]
复制代码
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

txt是一个列表,每个元素是一行。txt[r]表示第r行
txt[r][:]表示第r行的整个内容。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

你确认一下规范的文件是不是都是64列。每行63个逗号。最后一列是不是日期。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 50# qq253040425


    你也是会python的啊,没学过正则表达式吗
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 52# qq253040425


    总之NB。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 55# qq253040425


    你的机器可用内存是多少。需要处理的文件最大到多少G?
如果有条件当然是推荐你上64位,有大内存的电脑处理。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

本帖最后由 依山居 于 2015-11-19 16:12 编辑

我也上个正则表达式的版本。
考虑了可能有三种换行符号组合问题。
  1. """
  2. python正则处理DEL文件换行问题
  3. http://www.bathome.net/thread-38164-1-1.html
  4. 依山居 20:38 2015/11/18
  5. 参考了网上的资料,python 读取文件默认使用通用模式,不管\r\n都会被转换成\n
  6. 所以正则可以简化(\n),预计可以小幅提高处理速度
  7. """
  8. import re
  9. import time
  10. start=time.time()
  11. of="a.txt"
  12. rec=re.compile('(\"?)(\n)([^\"])')
  13. with open(of) as f:
  14.     txt=f.read()
  15.     res=re.sub(rec,r'\1\3',txt)
  16.     f.close()
  17. with open("out.txt","w+") as f:
  18.     f.write(res)
  19.     f.close()
  20. end=time.time()
  21. pt=end-start
  22. print("运行耗时:",pt)
  23. try:
  24.     input("按回车退出")
  25. except SyntaxError:
  26.     pass
复制代码
1

评分人数

下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 61# qq253040425


    更新了。你拿来测试1.7G的文件看看需要多久。给我贴下时间。我也想知道处理这种极别的数据需要多久。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 64# CrLf


    应该是逗号内吧。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 69# qq253040425


    ()包围的是子组,替换为对应的\1\3子组,相当于是换行被替换掉了。
正则略难懂,慢慢看吧。我也是反复调试了很久。

不同语言和工具里的正则基本相同.都是用\来转义一些特殊符号。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

本帖最后由 依山居 于 2015-11-19 08:58 编辑

回复 71# qq253040425


    列表解析的方法处理1.7G的文件有多快?你也贴个时间看看。
你的是固态硬盘?
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 73# qq253040425


    你改成19楼的代码是列表解析方式。

你给是57楼正则版的时间吧?

笨啊,处理大量数据当然也要考虑硬盘的读写速度,固态硬盘当然是比较快的。

程序后面加上txt=0 和newtxt=0 看看内存是不是会释放。
read() readlines()都是一次读取整个文件。
按我自己之前经验。行数多的文件,一次性读入整个文件进内存处理是比较快的。并且针对你的情况是无法直接改成逐读取行,并且整个处理逻辑都要改变。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

本帖最后由 依山居 于 2015-11-19 16:13 编辑

参考了网上的资料,python 读取文件默认使用通用模式,不管\r\n都会被转换成\n
所以正则可以简化(\n)

57楼代码已经更新。如果楼主能反馈下测试时间的对比更好~。谢谢。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 60# CrLf


      嘿嘿。我的这个思路总算变成代码了。

如果楼主还在处理这个问题,希望能反馈一下处理时间。

http://www.bathome.net/thread-38305-1-1.html
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

楼上的代码是能处理四种情况
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

返回列表