我正在用字符串列周围的双引号获取csv文件中的数据,但是在使用U-sql读取csv文件时,由于数据中也用了双引号,所以我也报错了。
我正在考虑替换第一步中数据中的双引号,然后读取该文件,但由于我们到处都有双引号,因此不确定如何执行此操作。
任何建议都将不胜感激,或者如果有人可以帮助我给出powershell或.net代码来做同样的事情,那将是非常有帮助的,因为我不擅长.net或powershell。
样本数据
“姓名”;“部门” “ Abc”;“教育”教学 “ Cde”;“测试”另一个”
应该是
“姓名”;“部门” “ Abc”;“教育教学” “ Cde”;“ TestAnother”
答案 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文件作为单列行(原始数据)读入变量。然后将每一行通过行处理器以解析数据并删除有问题的字符。对于处理固定宽度的文本文件,我已经做了类似的事情。