这是Web上的热门话题,但我找不到在CSV文件中进行查找和替换的简单方法。我的CSV文件如下所示:
"0.219530613504834,43.7737904197643,PR RUE D'ARTOIS"
"0.522235882011867,41.7681203998576,PR DE LA FOSSE AU ROI"
"0.039404145384227,44.7565229712732,PR DES PETITS PRES"
我需要在每行的开头和结尾删除双引号。
我尝试了以下脚本:
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in (D:/data.csv) do (
set temp=%%a
set temp=%temp:^"=%
)
我的逻辑是将每一行存储在%%a
中,并将任何内容替换为双引号。
我用^。
来逃避双引号这个脚本什么都不做。你能帮忙吗?
答案 0 :(得分:2)
有一个更简单的解决方案可以避免延迟扩展altogther - ~
修饰符从FOR变量内容中包含引号。
for /f "delims=" %%a in (D:/data.csv) do echo %%~a
答案 1 :(得分:1)
您的尝试有几个问题:
您需要使用延迟展开(使用!
代替%
)。如果没有延迟扩展,变量将在输入循环之前展开。
使用"delims="
比"tokens=*"
更可靠。使用"tokens=*"
,每行仍然被标记化,然后所有标记以空格分隔。但令牌最初可能由;
分隔。所以,如果你有一个;两个"在输入中你得到的是一两个"在输出中。
您不需要逃离"
。
您需要打印temp
,而不是仅使用新值修改它。
setlocal enabledelayedexpansion
for /f "delims=" %%a in (D:/data.csv) do (
set temp=%%a
echo !temp:"=!
)