标题: [文本处理] [已解决]批处理怎样把不以引号开头的行合并到上一行行尾? [打印本页]
作者: qq253040425 时间: 2015-11-16 18:06 标题: [已解决]批处理怎样把不以引号开头的行合并到上一行行尾?
比如有一个文件a.txt内容大致如下:
情景一:
"1","12","123","123
4"
"A","AB","ABC","ABCD"
执行脚本后内容能够修改为
"1","12","123","1234"
"A","AB","ABC","ABCD"
情景二:
"1","12","123","
4"
"A","AB","ABC","ABCD"
执行脚本后内容能够修改为
"1","12","123","4"
"A","AB","ABC","ABCD"
情景三(出现于27L的这种情况属于正确的数据)
"1","12","123",
"A","AB","ABC",
能处理情景一、二、三的代码在19L
就算处理1.7G的测试文件依然很快,但是对于大于等于两个字段有换行符就不能处理了,虽然不会报错,比如下面
情景四:
"1","
12","12
3",,,
"1","12","123",,,
执行脚本后内容修改为
"1","12","123",,,
"1","12","123",,,
能处理情景一、二、三、四的代码在44L和57L
44L的bat+js代码无法处理测试用的文件1.7G,原因未知, win2003的兼容性目前未知
57L的python代码能处测试用的文件1.7G,耗时140s,这应该与机器性能有关,仅作参考
P.S:
1. PyInstaller打包的exe在2003上跑会有问题,老老实实装python的好
2. 本机(win7)装了python3.5_X64编译出来的代码在2003下怎么弄都有问题,2003换python2.7.10_X64可行。X86在读取大文件的时候会报错内存错误
作者: 回家路上 时间: 2015-11-16 20:26
- @echo off & setlocal enabledelayedexpansion
-
- for /f "delims=" %%i in (a.txt) do (
- set line=%%i
- set line=!line:"=#!
- if "!line:~-1!" neq "#" (
- set pre=%%i
- ) else echo;!pre!%%i&set pre=
- )
-
- pause & exit /b
复制代码
作者: WHY 时间: 2015-11-16 20:27
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- if not "%%~i"==%%i (
- if %%~i#==%%i# (echo;!s!%%i) else set "s=%%i"
- ) else echo;%%i
- )
- pause
复制代码
- @if (0)==(0) echo off
- cscript //nologo //e:jscript "%~0" < a.txt
- pause & exit
- @end
- WSH.Echo(WSH.StdIn.ReadAll().replace(/([^"])\r\n/g, '$1'))
复制代码
作者: 依山居 时间: 2015-11-16 22:01
- o( ̄▽ ̄)o 2015/11/16 周一21:56:55.21 <( ̄︶ ̄)>
- D:\快盘\我写的程序\temp>fr a.txt -ric:(\"[0-9,a-z]+)\r\n -t:"\1" -stdout
- "1","12","123","1234"
- "A","AB","ABC","ABCD"
- "R","RS","RST","RSTU"
- "E","EF","EFG","EFGH"
复制代码
不需要跨行匹配也可以。
试了半天。思路是结尾不是“符号就把回车换行替换成空。
http://baiy.cn/utils/fr/index.htm
作者: qq253040425 时间: 2015-11-16 23:15
回复 2# 回家路上
a.txt的内容并没有变
作者: qq253040425 时间: 2015-11-16 23:17
回复 3# WHY
第一段代码执行后a.txt并没有变
第二段。。没看懂~
作者: qq253040425 时间: 2015-11-16 23:19
回复 4# 依山居
思路是对的,然而 'fr' 不是内部或外部命令,也不是可运行的程序或批处理文件。
作者: 依山居 时间: 2015-11-17 13:20
本帖最后由 依山居 于 2015-11-17 17:07 编辑
- """
- python把不以引号结尾的行与下一行连接
- 题目来源 http://www.bathome.net/thread-38164-1-1.html
- 依山居 13:13 2015/11/17
- 就是当是练习列表解析用法了
- """
- newtxt=[]
- with open("a.txt") as f:
- txt=f.readlines()
- txt=[r.rstrip() for r in txt]
- rn=len(txt)
- print("总行数:",rn)
- newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
- newtxt=[r+"\n" for r in newtxt if '\"' in r[0]]
- f.close()
-
- with open("b.txt","w+") as f:
- f.writelines(newtxt)
- f.close()
复制代码
作者: qq253040425 时间: 2015-11-17 16:18
回复 8# 依山居
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
========================== RESTART: F:\BAT\tt\tt.py ==========================
Traceback (most recent call last):
File "F:\BAT\tt\tt.py", line 11, in <module>
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
File "F:\BAT\tt\tt.py", line 11, in <listcomp>
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
IndexError: string index out of range
>>>
作者: 依山居 时间: 2015-11-17 16:38
太烦了。
有空行?
作者: qq253040425 时间: 2015-11-17 16:53
回复 10# 依山居
还真有 = = 。。莫名奇妙最后多了一行。。。
作者: qq253040425 时间: 2015-11-17 16:58
回复 10# 依山居
最后一行的空行。。这个貌似没办法避免。。导出的文本数据文件都有这样的问题。。。可以在脚本里规避掉最后一行空行的问题吗
作者: CrLf 时间: 2015-11-17 17:03
楼主不考虑以 , 结尾的错误断行吗?
作者: 依山居 时间: 2015-11-17 17:08
回复 13# CrLf
他给的例子也是真实文件,鬼知道他实际数据是怎么样的。
作者: 依山居 时间: 2015-11-17 17:10
回复 12# qq253040425
代码更新了。
作者: qq253040425 时间: 2015-11-17 17:37
回复 13# CrLf
不大可能出现错误的断行 - -
实际情况是 db2导出del文件,中间某个字段的某条记录中可能包含有换行符,然后就出现了我说的情况
本来应该在导出的时候,或者直接在数据库层面就能直接解决。但现在的实际情况是。。需要我们自己通过操作这个del文件来解决
0 0 蛋疼的不行
作者: qq253040425 时间: 2015-11-17 17:39
回复 15# 依山居
谢了~ 可用~
遍历路径下所有的del文件我就自己百度好了~
作者: 依山居 时间: 2015-11-17 18:05
回复 17# qq253040425
自己学一学正则表达式式啦。sed 和fr都是支持正则找查替换的工具。
作者: qq253040425 时间: 2015-11-17 18:50
本帖最后由 qq253040425 于 2015-11-18 17:40 编辑
回复 18# 依山居
谢谢大神帮助,已搞定!虽然主体部分的逻辑完全看不懂!但是测试能用了! 用百万级的.del文件测试过了,没啥问题的样子- import os
- import time
- import datetime
-
- print (time.strftime("%Y-%m-%d %H:%M:%S %p", time.localtime()))
- print ('Check start, remove the ok file ... ')
-
- lst_last=datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
- workdir='D:\\IMPDATA\\FTPFILE\\'+lst_last.strftime('%Y-%m-%d')+'\\cqcs\\817'
- okfile=workdir+'\check.ok'
-
- if os.path.exists(okfile):
- os.remove(okfile)
-
- newtxt=[]
- for dirpath,dirs,files in os.walk(workdir):
-
- for file in files:
-
- if os.path.splitext(file)[1] == '.del':
-
- vfname=os.path.join(dirpath,file)
- print ('Check file: ' + vfname)
-
- with open(vfname) as f:
- txt=f.readlines()
- txt=[r.rstrip() for r in txt]
- rn=len(txt)
- print("Rowscount:",rn)
- newtxt=[txt[r-1][:]+txt[r][:] if ( ('\"' not in txt[r][0]) ) else txt[r] for r in range(rn) ]
- newtxt=[r+"\n" for r in newtxt if r.count('\"')%2==0]
- f.close()
-
- nfname= vfname+'_new'
- with open(nfname,"w+") as f:
- f.writelines(newtxt)
- f.close()
-
- os.remove(vfname)
- os.rename(nfname,vfname)
-
- print ('Check over, touch the ok file ...')
- with open(okfile,'w+') as f:
- f.writelines('')
- f.close()
- print (time.strftime("%Y-%m-%d %H:%M:%S %p", time.localtime()))
复制代码
作者: 依山居 时间: 2015-11-17 19:16
你倒是真NB。
作者: qq253040425 时间: 2015-11-17 19:26
回复 20# 依山居
我在官网下载的64位的python3.5 = = 能不能教下如何封装exe
作者: 依山居 时间: 2015-11-17 19:32
回复 21# qq253040425
其中我也不会。自己百度啦。
就是打包成EXE
你用python mini打包成exe也可以。
作者: terse 时间: 2015-11-17 19:57
外部命令可用不- sed -ni ":a;$!N;/\n[^\"].*/s/\n//;ta;P;D" *.txt
复制代码
作者: WHY 时间: 2015-11-17 23:49
- @if (0)==(0) echo off
- cscript //nologo //e:jscript "%~0" < a.txt > b.txt
- pause & exit
- @end
-
- var s = WSH.StdIn.ReadAll().replace(
- /("[^"]*?)[\r\n]+([^"]*")/g,
- function(s0,s1,s2){if (s1+s2=='""'){return s0}else return s1+s2}
- )
- WSH.Echo(s)
复制代码
作者: 依山居 时间: 2015-11-18 10:11
本帖最后由 依山居 于 2015-11-18 10:16 编辑
从楼主给的例子看,我的代码可靠性差啊。我的代码判断的是不以“结尾的行与下一行连接。
第二行不以“开头,但是第一行”结尾。
作者: qq253040425 时间: 2015-11-18 11:30
回复 13# CrLf
不好意思 - - 真的出现这种断行了
但是数据是正常的数据,不是错误数据
作者: qq253040425 时间: 2015-11-18 11:33
本帖最后由 qq253040425 于 2015-11-18 11:38 编辑
回复 25# 依山居
大神!!
出现问题了。。
数据中有
"LS81702201409060006659","20",,"817029700","817029700","2","9","",,,,,
不以“结尾,以,结尾的数据,这样的子的数据是正确的数据,
Traceback (most recent call last):
File "F:\BAT\tt\check_del_here.py", line 29, in <module>
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
File "F:\BAT\tt\check_del_here.py", line 29, in <listcomp>
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
IndexError: list index out of range
作者: 依山居 时间: 2015-11-18 12:16
回复 27# qq253040425
下次再提问传实际文件,敏感信息用其它字替换掉就行。
我不熟悉db2 的del文件格式。
导出的数据,固定是多少列?
作者: qq253040425 时间: 2015-11-18 13:18
回复 28# 依山居
嗯 谢谢提醒
del文件的内容和我那个txt的内容是一样的,del其实也是文本文件
我觉得固定列数并不科学,我感觉
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
newtxt=[r+"\n" for r in newtxt if '\"' in r[0]]
这一段修改一下,因为实际文件中的错误情况只有一种: n行的最后一个字段不以”结尾且n+1行不以”开头
作者: 依山居 时间: 2015-11-18 13:20
回复 29# qq253040425
我直觉认为。这货要能正常工作必须固定列。
作者: 依山居 时间: 2015-11-18 13:21
回复 29# qq253040425
你需要把各种情况整理到汇总到帖子里。
作者: 依山居 时间: 2015-11-18 13:22
- @echo off
- ::依山居 13:01 2015/11/18
- ::fr 不带-stdout参数会直接修改原文件,所以复制s.txt为ss.txt运行测试
- ::fr 使用-s 可以列举子目录修改匹配的文件。注意做好备份
- copy s.txt ss.txt /y
- ::以引号结尾,不以引号开头,就删掉回车换行。这个规则好处理测试可行。
-
- fr ss.txt -rnnlic:\"(\r\n)[^\"] -t:
-
- pause
复制代码
作者: qq253040425 时间: 2015-11-18 13:23
回复 30# 依山居
发现一个解决一个吧
作者: qq253040425 时间: 2015-11-18 13:26
回复 32# 依山居
现在实际情况有那种本行以,结尾第二行以"开头的正确数据
作者: qq253040425 时间: 2015-11-18 13:27
回复 31# 依山居
嗯,这段代码能应付现在的情况后我会整理下的~
作者: qq253040425 时间: 2015-11-18 13:29
回复 依山居
大神!!
出现问题了。。
数据中有
"LS81702201409060006659","20",,"81702 ...
qq253040425 发表于 2015-11-18 11:33
主要是27楼这种情况,现在的代码会报错
作者: 依山居 时间: 2015-11-18 13:34
回复 36# qq253040425
也只能这样了。这代码是按你原先说明的规则写的。容错性差是意料之中的。
作者: qq253040425 时间: 2015-11-18 13:50
回复 37# 依山居
好吧,那能不能帮忙解释下
newtxt=[txt[r][:]+txt[r+1][:] if ('\"' not in txt[r][-1]) else txt[r] for r in range(rn) ]
newtxt=[r+"\n" for r in newtxt if '\"' in r[0]]
这一段什么意思呢~ 看不明白
作者: qq253040425 时间: 2015-11-18 14:04
本帖最后由 qq253040425 于 2015-11-18 14:12 编辑
回复 37# 依山居
针对27楼的情况
报错的行修改为
newtxt=[txt[r][:]+txt[r+1][:] if ((',' not in txt[r][-1])) else txt[r] for r in range(rn) ]
能过,但是原来想处理的情况就不行了,用or连击两个条件
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) ]
也是list out of range,最后再改成
newtxt=[txt[r][:]+txt[r+1][:] if ( ('\"' or ',') not in txt[r][-1]) else txt[r] for r in range(rn) ]
就发现 ('\"' or ',') 这里,谁在前才会生效
作者: 依山居 时间: 2015-11-18 14:19
回复 39# qq253040425
很难改的。你搜索列表解析
我不会用列表解析作复杂的判断。
作者: 依山居 时间: 2015-11-18 14:21
- 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) ]
复制代码
作者: qq253040425 时间: 2015-11-18 14:42
回复 41# 依山居
不行 - -
还有 txt[r][:]是什么意思?
作者: 依山居 时间: 2015-11-18 15:02
txt是一个列表,每个元素是一行。txt[r]表示第r行
txt[r][:]表示第r行的整个内容。
作者: CrLf 时间: 2015-11-18 15:08
本帖最后由 CrLf 于 2015-11-18 18:04 编辑
Bat+JS 来一个- 1>1/* :
- @echo off
- cscript -nologo -e:jscript "%~0" <a.txt >b.txt
- pause & exit /b
- */
- WSH.Echo(
- WSH.StdIn.ReadAll().replace(
- /"[^"]*"/g,
- function($0){
- return $0.replace(/\r?\n/g,'')
- }
- )
- )
复制代码
作者: qq253040425 时间: 2015-11-18 17:41
本帖最后由 qq253040425 于 2015-11-18 17:44 编辑
回复 43# 依山居
最后表示感谢,1L已更新,19L代码也更新了,27L的情况在数据库端控制好就完美解决啦~
作者: qq253040425 时间: 2015-11-18 17:42
回复 44# CrLf
1L情况已更新~
还有你这代码能直接在bat里面执行吗? 支持win7 和win2003吗
作者: CrLf 时间: 2015-11-18 18:05
回复 46# qq253040425
忘了加上输出,已修改
我猜是通用的,你自己试试就知道了
作者: 依山居 时间: 2015-11-18 18:40
你确认一下规范的文件是不是都是64列。每行63个逗号。最后一列是不是日期。
作者: qq253040425 时间: 2015-11-18 18:47
回复 48# 依山居
并不是 - - 数据库里面每张表字段的数量都不一样的,
现在能控制的就是最后一列是字符串,也就是导出来的文件正常情况下每一行肯定是以"结尾
作者: qq253040425 时间: 2015-11-18 18:55
回复 47# CrLf
...!!!!!! 好厉害。。反正我自己机器上是有效,我试了几种情况都能处理!求讲解
明天再去win2003上看看
作者: 依山居 时间: 2015-11-18 19:12
回复 50# qq253040425
你也是会python的啊,没学过正则表达式吗
作者: qq253040425 时间: 2015-11-18 19:22
回复 51# 依山居
我能说我是昨天才知道有python吗 - -
作者: 依山居 时间: 2015-11-18 19:31
回复 52# qq253040425
总之NB。
作者: qq253040425 时间: 2015-11-18 20:22
回复 53# 依山居
python有一种情况没处理的了,看1L~
作者: qq253040425 时间: 2015-11-18 20:23
回复 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,'')
- }
- )
- )
复制代码
处理指定文件夹下的所有del文件~ 报告 216M的文件没问题,1.7G的文件报错了~
作者: 依山居 时间: 2015-11-18 20:27
回复 55# qq253040425
你的机器可用内存是多少。需要处理的文件最大到多少G?
如果有条件当然是推荐你上64位,有大内存的电脑处理。
作者: 依山居 时间: 2015-11-18 20:47
本帖最后由 依山居 于 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:
- pass
复制代码
作者: qq253040425 时间: 2015-11-18 21:02
回复 56# 依山居
我本机是64位+8G的内存 要处理的文本文件,目前来看 没有超过2G的...
python没有出现过因为文件太大报错的事,现在是BAT+JS出现
作者: qq253040425 时间: 2015-11-18 21:08
回复 57# 依山居
源文件
"1","12","123","","
2015-10-31",
"1","12","123","","",
输出的文件
"1","12","123","",015-10-31",
"1","12","123","","",
wrong~
作者: CrLf 时间: 2015-11-18 21:10
本帖最后由 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 = []
- }
复制代码
作者: qq253040425 时间: 2015-11-18 21:20
回复 57# 依山居
还有种情况,一行多个换行符
源:
"1","1
2","123","","201
5-10-31",
"1","1
2","12
3","","",
输出:
"1","1","123","","201-10-31",
"1","1","12","","",
作者: qq253040425 时间: 2015-11-18 21:22
本帖最后由 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","","",
到底怎么做到的 - -
作者: qq253040425 时间: 2015-11-18 21:26
回复 60# CrLf
- - 这段代码我完全懵圈了...看不懂,也不知道怎么改
作者: CrLf 时间: 2015-11-18 22:07
回复 62# qq253040425
通过计算 " 个数,来判断是否在引号内,只包含奇数个 " 时一直读取下一行直到闭合,然后接为一行输出
作者: 依山居 时间: 2015-11-18 22:45
回复 61# qq253040425
更新了。你拿来测试1.7G的文件看看需要多久。给我贴下时间。我也想知道处理这种极别的数据需要多久。
作者: 依山居 时间: 2015-11-18 22:46
回复 64# CrLf
应该是逗号内吧。
作者: CrLf 时间: 2015-11-18 22:53
回复 66# 依山居
引号对
作者: qq253040425 时间: 2015-11-18 22:55
回复 65# 依山居
运行耗时: 140.09601283073425
作者: qq253040425 时间: 2015-11-18 23:08
本帖最后由 qq253040425 于 2015-11-18 23:11 编辑
回复 65# 依山居
效率没原来快是因为对一整个文件进行操作的原因吗? 原来貌似是逐行的?
不过已知会出现状况的情况也都测试过,好像没啥问题了 !!
我有百度python的正则,但是那俩带正则的地方还是完全看不懂 ,求讲解 ~~~
作者: 依山居 时间: 2015-11-18 23:34
回复 69# qq253040425
()包围的是子组,替换为对应的\1\3子组,相当于是换行被替换掉了。
正则略难懂,慢慢看吧。我也是反复调试了很久。
不同语言和工具里的正则基本相同.都是用\来转义一些特殊符号。
作者: qq253040425 时间: 2015-11-19 00:00
回复 60# CrLf
我是小白!求完整代码~么么哒~1L有更新,要不要看看~
作者: 依山居 时间: 2015-11-19 07:29
本帖最后由 依山居 于 2015-11-19 08:58 编辑
回复 71# qq253040425
列表解析的方法处理1.7G的文件有多快?你也贴个时间看看。
你的是固态硬盘?
作者: qq253040425 时间: 2015-11-19 09:43
回复 72# 依山居
我在68L回复过啦
运行耗时: 140
果然这个read()的办法吃内存cpu和硬盘咩
作者: qq253040425 时间: 2015-11-19 09:45
回复 72# 依山居
我在监控,因为实际上一个文件夹下会有很多很多的del文件,一开始用32位的python读着读着就内存错误了,换64位的,倒是没报错了,但是我在内存并没有释放,一直在增大
作者: 依山居 时间: 2015-11-19 10:10
回复 73# qq253040425
你改成19楼的代码是列表解析方式。
你给是57楼正则版的时间吧?
笨啊,处理大量数据当然也要考虑硬盘的读写速度,固态硬盘当然是比较快的。
程序后面加上txt=0 和newtxt=0 看看内存是不是会释放。
read() readlines()都是一次读取整个文件。
按我自己之前经验。行数多的文件,一次性读入整个文件进内存处理是比较快的。并且针对你的情况是无法直接改成逐读取行,并且整个处理逻辑都要改变。
作者: qq253040425 时间: 2015-11-19 10:54
以上
谢谢 @依然居 @CrLf @WHY @回家路上 各位的帮忙
作者: 依山居 时间: 2015-11-19 16:08
本帖最后由 依山居 于 2015-11-19 16:13 编辑
参考了网上的资料,python 读取文件默认使用通用模式,不管\r\n都会被转换成\n
所以正则可以简化(\n)
57楼代码已经更新。如果楼主能反馈下测试时间的对比更好~。谢谢。
作者: 依山居 时间: 2015-11-24 18:42
回复 60# CrLf
嘿嘿。我的这个思路总算变成代码了。
如果楼主还在处理这个问题,希望能反馈一下处理时间。
http://www.bathome.net/thread-38305-1-1.html
作者: 依山居 时间: 2015-11-24 19:05
楼上的代码是能处理四种情况
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |