[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 61# qq253040425


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

TOP

回复 62# qq253040425


    通过计算 " 个数,来判断是否在引号内,只包含奇数个 " 时一直读取下一行直到闭合,然后接为一行输出
1

评分人数

TOP

回复 60# CrLf


     - - 这段代码我完全懵圈了...看不懂,也不知道怎么改  

TOP

本帖最后由 qq253040425 于 2015-11-18 21:28 编辑

回复 44# CrLf

44L的代码

源:
"1","12","
123","","201
5-10-31",
"1","1
2","12
3","","",

这种情况也能处理成
"1","12","123","","2015-10-31",
"1","12","123","","",

到底怎么做到的 - -

TOP

回复 57# 依山居

还有种情况,一行多个换行符

源:
"1","1
2","123","","201
5-10-31",
"1","1
2","12
3","","",

输出:
"1","1","123","","201-10-31",
"1","1","12","","",

TOP

本帖最后由 CrLf 于 2015-11-18 21:12 编辑

回复 55# qq253040425


    整个文件太大,那就逐行处理,换个思路,通过计算有几个 " 号来判断是否在引号内,JS 部分修改如下:
  1. var flag = false
  2. var arr = []
  3. ReadNextLine: while(!WSH.StdIn.AtEndOfStream){
  4.    var line = WSH.StdIn.ReadLine()
  5.    arr.push(line)
  6.    line.replace(/"/g,function(){flag=!flag})
  7.    if(flag&&!WSH.StdIn.AtEndOfStream) continue ReadNextLine
  8.    WSH.Echo(arr.join(''))
  9.    arr = []
  10. }
复制代码

TOP

回复 57# 依山居

源文件
"1","12","123","","
2015-10-31",
"1","12","123","","",
输出的文件
"1","12","123","",015-10-31",
"1","12","123","","",

wrong~

TOP

回复 56# 依山居


    我本机是64位+8G的内存  要处理的文本文件,目前来看 没有超过2G的...

    python没有出现过因为文件太大报错的事,现在是BAT+JS出现

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

回复 55# qq253040425


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

TOP

回复 44# CrLf
  1. 1>1/* :
  2. @echo off
  3. set foldername=F:\BAT\tt
  4. for /f "delims=\" %%a in ('dir /b /a-d /o-d "%foldername%\*.del"') do (  
  5. cscript -nologo -e:jscript "%~0" <%%a >b.del
  6. rm %%a
  7. move b.del %%a
  8. )
  9. */
  10. WSH.Echo(
  11.    WSH.StdIn.ReadAll().replace(
  12.       /"[^"]*"/g,
  13.       function($0){
  14.          return $0.replace(/\r?\n/g,'')
  15.       }
  16.    )
  17. )
复制代码
处理指定文件夹下的所有del文件~    报告  216M的文件没问题,1.7G的文件报错了~

TOP

回复 53# 依山居

python有一种情况没处理的了,看1L~

TOP

回复 52# qq253040425


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

TOP

回复 51# 依山居

我能说我是昨天才知道有python吗 - -

TOP

回复 50# qq253040425


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

TOP

返回列表