PowerShell 脚本 - 在 csv 文件中转义引号

PowerShell script - escaping quotes in a csv file

提问人:PracticingPython 提问时间:7/14/2023 最后编辑:PracticingPython 更新时间:7/14/2023 访问量:70

问:

我正在使用一个脚本,该脚本打开一个 csv,将其拆分为多个较小的 csv,然后压缩文件,以便可以轻松上传它们。脚本在这方面做得很好,但我需要一种方法来转义双引号 (“),以便将它们视为文本。我在下面包含了执行拆分的脚本部分。谢谢!

param([string]$in_file, [string]$out_folder, [int]$linesperFile = 100000, [string]$ext = 'csv', [string]$header='Y', [string]$compress='Y')

Function Split-File{
    Param(
        $in_file,
        $out_folder,
        $linesperFile,
        $ext,
        $header
        )
    $filecount = 1
    $reader = $null
    $header_row = $null
    try{
        $reader = [io.file]::OpenText($in_file)
        if ($header -ne 'N') {
            $header_row = $reader.ReadLine()
        }
        try{
            $writer = [io.file]::CreateText("{0}{1}.{2}" -f ($out_folder,$filecount.ToString("000"),$ext))
            $filecount++
            $linecount = 0
            
            while($reader.EndOfStream -ne $true) {
                if ($header -eq 'Y') {
                    $writer.WriteLine($header_row)
                }
                while( ($linecount -lt $linesperFile) -and ($reader.EndOfStream -ne $true)){
                    $writer.WriteLine($reader.ReadLine());
                    $linecount++
                }
    
                if($reader.EndOfStream -ne $true) {
                    $writer.Dispose();
                    $writer = [io.file]::CreateText("{0}{1}.{2}" -f ($out_folder,$filecount.ToString("000"),$ext))
                    $filecount++
                    $linecount = 0
                }
            }
        } finally {
            $writer.Dispose();
        }
    } finally {
        $reader.Dispose();
    }
    return $filecount

我尝试了iRon的解决方案,但它仍然不起作用......它到达带有双引号的一行,然后开始一遍又一遍地重复同一行。

enter image description here

下面的数据应该是单行数据enter image description here

enter image description here

PowerShell 转义 引号

评论


答: 暂无答案