Board logo

标题: [文本处理] 批处理如何删除csv文本里每一行中的指定字符和替换指定位置的字符 [打印本页]

作者: szy56801    时间: 2016-9-22 15:33     标题: 批处理如何删除csv文本里每一行中的指定字符和替换指定位置的字符

本帖最后由 pcl_test 于 2016-9-22 20:14 编辑

csv文本数据处理求助
一个csv文本里都是这样的数据,要把
2015-10-08 08:59:00.500,97100.0,97610.0,1,97960.0,1,0

转换为

20151008,085900,500,97100.0,97610.0,1,97960.0,1,0

就是去掉所有的-和所有的:
同时第一个空格和第一个.改为,

谢谢大侠!
作者: codegay    时间: 2016-9-22 15:50

python3
  1. #文本替换
  2. #2016年9月22日 15:41:56 codegay
  3. with open("csv.txt","r+") as f:
  4.     csv = f.readlines()
  5.     newcsv=[r.replace(" ","",1).replace(".",",",1).replace("-","").replace(":","") for r in csv]
  6.     f.seek(0)
  7.     f.truncate()
  8.     f.writelines(newcsv)
复制代码
本质是一个简单的字符串替换。
作者: szy56801    时间: 2016-9-22 16:04

回复 2# codegay


    谢谢!刚一个大神给了这个方案:
sed -i 's/-//g' sn_0.csv

sed -i 's/://g' sn_0.csv

sed -i 's/ /,/g' sn_0.csv

sed -i 's/\./,/' sn_0.csv
作者: codegay    时间: 2016-9-22 16:14

回复 3# szy56801


    别点回复我。这和我没关系。
作者: pcl_test    时间: 2016-9-23 21:10

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2* delims=. " %%a in ('type "test.csv"') do (
  3.     set "str=%%a,%%b,%%c"
  4.     set "str=!str:-=!"
  5.     echo;!str::=!
  6. )
  7. pause
复制代码

作者: pcl_test    时间: 2016-9-23 21:12

  1. powershell -c "(gc 'test.csv') -replace '-|:','' -replace '(?<=^\S+)\s+',',' -replace '(?<=^[^\.]+)\.',','"
  2. pause
复制代码
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"test.csv"&pause&exit
  2. WSH.echo(WSH.StdIn.ReadAll().replace(/-|:/g,'').replace(/^(\S+)\s+/mg,'$1,').replace(/^([^\.]+)\./mg,'$1,'))
复制代码
  1. rem 第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. gawk "{gsub(/-|:/,\"\");sub(/[[:space:]]+/,\",\");sub(/\./,\",\")}1" test.csv
  3. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2