【问题标题】:Remove double quotes from Data从数据中删除双引号
【发布时间】:2018-10-16 18:20:43
【问题描述】:

我在 csv 文件中获取数据,字符串列周围有双引号,但是在使用 U-sql 读取 csv 文件时,由于数据中的双引号,我也遇到了错误。

我正在考虑替换第一步数据中的双引号,然后读取该文件,但由于我们到处都有双引号,因此不确定如何执行此操作。

任何建议都将不胜感激,或者如果有人可以帮助我提供 powershell 或 .net 代码来做同样的事情,这将是很大的帮助,因为我不擅长 .net 或 powershell。

样本数据

“姓名”;“部门” “Abc”;“教育”教学” “Cde”;“测试”另一个”

应该是

“姓名”;“部门” “ABC”;“教育教学” “Cde”;“TestAnother”

【问题讨论】:

  • 您在使用 Csv 提取器吗?你能展示样本数据吗?
  • 你在使用 csv 提取器吗?
  • 它的 txt 提取器和样本数据有问题。数据不仅包含字母,还可以包含数字和特殊字符
  • 是的,在这种情况下,字符串应该包含在“AA”中,但如果数据中有“”,U-SQL 就会混淆。

标签: azure-data-lake u-sql


【解决方案1】:

您可以在 Visual Studio Code 中使用正则表达式查找/替换。例如(假设数据只包含字母,您可以根据需要编辑正则表达式):

Find regex: "([a-zA-Z]+)"([a-zA-Z]+)"
Replace string: "$1$2"
Input string: "Name";"Department" "Abc";"Education"Teaching" "Cde";"Test"Another"
Output string: "Name";"Department" "Abc";"EducationTeaching" "Cde";"TestAnother"

【讨论】:

    【解决方案2】:

    所以看来你的报价不是标准的[Char]34。相反,他们是[Char]8220; [Char]8221

    所以我们需要在powershell中做一个替换

    $TEST = @"
    “Name”;”Department” “Abc”;”Education”Teaching” “Cde”;”Test”Another”
    "@
    
    $TEST | %{ 
        $_ = $_ -replace [char]8220, '"'
        $_ = $_ -replace [char]8221, '"'
        $_ -replace '"([a-zA-Z]+)"([a-zA-Z]+)"','"$2 $1"'
    }
    

    这将使输出:

    "Name";"Department" "Abc";"Teaching Education" "Cde";"Another Test"
    

    【讨论】:

      【解决方案3】:

      您也可以在custom row processor 中执行此操作。让初始数据将 CSV 文件作为单列行(原始数据)读取到变量中。然后将每一行通过一个行处理器来解析数据并删除有问题的字符。我已经为处理固定宽度的文本文件做了类似的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-05
        • 1970-01-01
        相关资源
        最近更新 更多