首页 > 解决方案 > 在电源查询中加载 CSV 时如何处理多个引号?

问题描述

我有几个 CSV 文件要组合在一个表中(文件具有相同的结构),但文件结构已经足够有问题了。

第一行是普通的,只是用逗号分隔的标题:

帐户,描述,实体,风险,...

但是实际数据的行以双引号“开头和结尾”,列用逗号分隔,但人(全名)在开头和结尾有两个双引号。我知道这是一个转义字符,用于保留名称一栏,但一栏就足够了。

"1625110,待开发票,587,正常,""Doe, John"",..."

所以我需要做的并且不知道如何从每行的开头和结尾删除 " 并在每行中用数据""替换"

我需要在 Power Query 中执行此操作,因为随着时间的推移会有更多类似的 CSV 文件,我不想手动清理它们。

有任何想法吗?

我尝试简单:

= Table.AddColumn(#"Removed Other Columns", "Custom", each Csv.Document(
    [Content],
    [
        Delimiter = ",",
        QuoteStyle = QuoteStyle.Csv
    ]
))

标签: csvpowerbipowerquerym

解决方案


尝试先加载到单列,替换值以删除多余的引号,然后用",".

这是加载单个文件的样子:

let
    Source = Csv.Document(File.Contents("filepath\file.csv"),[Delimiter="#(tab)"]),
    ReplaceQuotes = Table.ReplaceValue(Source,"""""","""",Replacer.ReplaceText,{"Column1"}),
    SplitIntoColumns = Table.SplitColumn(ReplaceQuotes, "Column1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv)),
    #"Promoted Headers" = Table.PromoteHeaders(SplitIntoColumns, [PromoteAllScalars=true])
in
    #"Promoted Headers"

我使用制表符分隔符来防止它在第一步中分裂。


推荐阅读