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


    你需要把各种情况整理到汇总到帖子里。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

  1. @echo off
  2. ::依山居 13:01 2015/11/18
  3. ::fr 不带-stdout参数会直接修改原文件,所以复制s.txt为ss.txt运行测试
  4. ::fr 使用-s 可以列举子目录修改匹配的文件。注意做好备份
  5. copy s.txt ss.txt /y
  6. ::以引号结尾,不以引号开头,就删掉回车换行。这个规则好处理测试可行。
  7. fr ss.txt -rnnlic:\"(\r\n)[^\"] -t:
  8. pause
复制代码
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 30# 依山居


   发现一个解决一个吧

TOP

回复 32# 依山居

现在实际情况有那种本行以,结尾第二行以"开头的正确数据

TOP

回复 31# 依山居


嗯,这段代码能应付现在的情况后我会整理下的~

TOP

回复  依山居

大神!!
    出现问题了。。

数据中有
"LS81702201409060006659","20",,"81702 ...
qq253040425 发表于 2015-11-18 11:33



    主要是27楼这种情况,现在的代码会报错

TOP

回复 36# qq253040425

也只能这样了。这代码是按你原先说明的规则写的。容错性差是意料之中的。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 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]]   

这一段什么意思呢~ 看不明白

TOP

本帖最后由 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 ',')  这里,谁在前才会生效

TOP

回复 39# qq253040425


    很难改的。你搜索列表解析
我不会用列表解析作复杂的判断。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

  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

回复 41# 依山居


    不行 - -  

还有 txt[r][:]是什么意思?

TOP

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

TOP

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

Bat+JS 来一个
  1. 1>1/* :
  2. @echo off
  3. cscript -nologo -e:jscript "%~0" <a.txt >b.txt
  4. pause & exit /b
  5. */
  6. WSH.Echo(
  7.    WSH.StdIn.ReadAll().replace(
  8.       /"[^"]*"/g,
  9.       function($0){
  10.          return $0.replace(/\r?\n/g,'')
  11.       }
  12.    )
  13. )
复制代码

TOP

本帖最后由 qq253040425 于 2015-11-18 17:44 编辑

回复 43# 依山居


    最后表示感谢,1L已更新,19L代码也更新了,27L的情况在数据库端控制好就完美解决啦~

TOP

返回列表