在电源查询中加载 CSV 时如何处理多个引号?

Posted

技术标签:

【中文标题】在电源查询中加载 CSV 时如何处理多个引号?【英文标题】:How to deal with multiple quotes when loading CSV in power query? 【发布时间】:2020-03-31 20:52:21 【问题描述】:

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

第一行是普通的,只是用逗号分隔的表头:

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

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

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

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

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

有什么想法吗?

我正在尝试简单:

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

【问题讨论】:

【参考方案1】:

尝试先加载到单个列,替换值以删除多余的引号,然后按"," 拆分。

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

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"

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

【讨论】:

以上是关于在电源查询中加载 CSV 时如何处理多个引号?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理数据透视表和电源查询中的重复条目以填充到 excel 仪表板中

使用to_csv时如何处理pandas内存错误?

如何处理三相变频电源故障报警

在Google Cloud中部署Python App时如何处理打开文件的路径?

执行 Flux.map() 时如何处理错误

IOS,应用启动时如何处理多个本地通知?