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

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

明天再去win2003上看看

TOP

回复 48# 依山居

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

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

TOP

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

TOP

回复 46# qq253040425


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

TOP

回复 44# CrLf

1L情况已更新~

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

TOP

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

回复 43# 依山居


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

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

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

TOP

回复 41# 依山居


    不行 - -  

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

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

回复 39# qq253040425


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

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

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

回复 36# qq253040425

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

TOP

回复  依山居

大神!!
    出现问题了。。

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



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

TOP

返回列表