从数据中删除双引号

时间:2018-10-16 18:20:43

标签: azure-data-lake u-sql

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

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

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

样本数据

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

应该是

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

3 个答案:

答案 0 :(得分:0)

您可以在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"

答案 1 :(得分:0)

所以您的报价似乎不是标准的[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"

答案 2 :(得分:0)

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