返回列表 发帖
回复 44# CrLf

1L情况已更新~

还有你这代码能直接在bat里面执行吗? 支持win7 和win2003吗

TOP

回复 46# qq253040425


    忘了加上输出,已修改
    我猜是通用的,你自己试试就知道了

TOP

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

TOP

回复 48# 依山居

并不是 - - 数据库里面每张表字段的数量都不一样的,

现在能控制的就是最后一列是字符串,也就是导出来的文件正常情况下每一行肯定是以"结尾

TOP

回复 47# CrLf

...!!!!!! 好厉害。。反正我自己机器上是有效,我试了几种情况都能处理!求讲解

明天再去win2003上看看

TOP

回复 50# qq253040425


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

TOP

回复 51# 依山居

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

TOP

回复 52# qq253040425


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

TOP

回复 53# 依山居

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

TOP

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

TOP

回复 55# qq253040425


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

TOP

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

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

评分人数

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

TOP

回复 56# 依山居


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

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

TOP

回复 57# 依山居

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

wrong~

TOP

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

回复 55# qq253040425


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

TOP

返回列表