gpt4 book ai didi

csv - 批处理 for 循环、csv 解析和正确输出到文件的问题

转载 作者:行者123 更新时间:2023-12-04 20:35:17 27 4
gpt4 key购买 nike

让我描述一下我的问题。我有一个从 excel 导出的包含大量数据的 csv 文件。该文件的第一行有标题,第二行有列标题。我只需要从该文件中提取两列(第 2 列和第 3 列),将它们放在 1 列并将输出发送到另一个文件。

例子:

Title
colA , colB , colC , colD ,...
abc , def , ghi , jkl ,...
abc , def , ghi , jkl ,...
abc , def , ghi , jkl ,...
abc , def , ghi , jkl ,...

问题是,csv 解析器在遇到行时失败包含带有 - ( ) @ 字符的字符串。(我认为循环将它们视为分隔符,因此每次都会给我一个超出范围的错误)。

这是我已有的。

@Echo off & setlocal EnableExtensions
setLocal EnableDelayedExpansion

REM creating and clearing files
copy /y NUL C:\list1.csv >NUL
copy /y NUL C:\list1_tmp.csv >NUL
copy /y NUL C:\exportedColumns.csv >NUL
copy /y NUL C:\Result.txt >NUL

set Result=C:\Result.txt
set Source=C:\sourcelist.csv
set list1=C:\list1.csv
set list1_tmp=C:\list1_tmp.csv
set expCol=C:\exportedColumns.csv

REM skip 1st two lines from source file and put to output file list1
for /f "skip=2 delims=*" %%a in (%Source%) do (echo %%a >>%list1%)

REM shorten each line to 500 chars and put it to new file
for /f "tokens=* delims=" %%a in ("%list1%") do (
set s=%%a
set s=%s:~0,500%
echo.%s% >> "%list1_tmp%"
)
REM ^^^^^^^^^^^ this is not working. It puts only 1 space to the output file

rem Parsing the csv file
rem Process the file:
call :ProcessFile < %list1_tmp%
exit /B

:ProcessFile
set /P line=
:nextLine
set line=:EOF
set /P line=
if "!line!" == ":EOF" goto :EOF
set i=0
for %%e in (%line%) do (
set /A i+=1
for %%i in (!i!) do (
if %%i==1 echo %%~e >> %expCol%
if %%i==2 echo %%~e >> %expCol%
)
if %%i==3 goto nextLine
REM I don't want it to process all the columns
)
goto nextLine

我想请你看看这个并帮助我将 2 列合二为一并将输出放入 1 个文件。

我将不胜感激。

最佳答案

这个怎么样?

for /f "skip=2 tokens=2,3 delims=, " %i in (input.csv) do echo %i%j >> output.csv

编辑:

要用换行符替换/,你可以试试这个:

@echo off

for /f "skip=2 tokens=2,3 delims=, " %%i in (test.csv) do call :replace %%i%%%j
goto :eof

:replace
set string=%*
For /f "tokens=1,* delims=/" %%a in ('echo %string%') Do (
echo.%%a
If not "%%b"=="" call :replace %%b)

对于输入:

title
colA , colB , colC , colD ,...
abc , def , g\hi , jkl ,...

以上将输出:

defg
hi

关于csv - 批处理 for 循环、csv 解析和正确输出到文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15530816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com