使用逗号分隔符将单个 CSV 列批量转换为多个

Posted

技术标签:

【中文标题】使用逗号分隔符将单个 CSV 列批量转换为多个【英文标题】:Batch single CSV column to multiple with comma delimiter 【发布时间】:2021-02-18 06:19:45 【问题描述】:

我希望创建一个批处理脚本,该脚本使用批处理脚本将文本合并并转换为 Excel 中的列。 我设法合并了 CSV 文件,以便它们创建一个只有一个标题的 CSV。存储的数据以逗号分隔,但我无法使用逗号分隔符将包含整个字符串的单列拆分为多个列。例如 "a,b,c" 应该在同一行 "a b c" 上变成三列

希望有人能帮忙。

到目前为止我的代码:


ECHO Set working directory
pushd %~dp0

ECHO Deleting existing combined file
del combined.csv

setlocal ENABLEDELAYEDEXPANSION

REM set count to 1
set cnt=1

REM for each file that matches *.csv
for %%i in (*.csv) do (
REM if count is 1 it's the first time running
  if !cnt!==1 (
REM echo ^"sep=,^" >> combined.csv
REM push the entire file complete with header into combined.csv - this will also create combined.csv
    for /f "delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv
REM otherwise, make sure we're not working with the combined file and
  ) else if %%i NEQ combined.csv (
REM push the file without the header into combined.csv
    for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv
  )
REM increment count by 1
  set /a cnt+=1
)

PAUSE```

【问题讨论】:

Powershell 可以正确地为您替换分隔符。您可以通过简单地在循环中执行foreach 来完成完整的powershell。做一个文件就像:powershell "Import-Csv .\test.csv -Delimiter , | Export-Csv -delimiter "t" .\temp.csv -NoTypeInformation" 或在 for 循环中将其合并到批处理文件中。for %%i in (*.csv) do powershell.... 【参考方案1】:

你只需要使用字符串替换,例如前面的分隔符是空格字符,

@echo off 
set "str=a b c"
echo %str%     
set "str=%str: =,%"
echo %str%

输出将是:

a,b,c

你为什么做这个? Excel 现在已经支持空格字符分隔。只需更改文件扩展名即可。

【讨论】:

你应该考虑csv的值也可能有空格,所以"John Smith" "Harry Johnson"不会变成"John Smith","Harry Johnson"而是"John,Smith","Harry, Johnson" 数据已经用逗号分隔,但是 Excel 没有将数据分隔成几列 @Dlaurs20 你可以阅读这篇文章,How to open CSV with Excel 或者你可以使用这个免费软件nirsoft.net/utils/csv_file_view.html 遗憾的是,Excel 的不同本地化对“csv”使用不同的分隔符。也许this is helpful?

以上是关于使用逗号分隔符将单个 CSV 列批量转换为多个的主要内容,如果未能解决你的问题,请参考以下文章

如何将同时具有逗号和空格分隔符的 CSV 文件转换为只有空格分隔符的 csv

使用 Python 将多个字符串元素列表转换为单个元素以逗号分隔的列表

如何修改excel转换csv的分隔符

使用 XSLT 将 XML 转换为 CSV,用于在单个标记中以空格分隔的多个记录

将 csv 数据转换为逗号分隔的列表

将逗号分隔字符串的熊猫列转换为虚拟变量