csv - 在电源查询中加载 CSV 时如何处理多个引号?
问题描述
我有几个 CSV 文件要组合在一个表中(文件具有相同的结构),但文件结构已经足够有问题了。
第一行是普通的,只是用逗号分隔的标题:
帐户,描述,实体,风险,...
但是实际数据的行以双引号“开头和结尾”,列用逗号分隔,但人(全名)在开头和结尾有两个双引号。我知道这是一个转义字符,用于保留名称一栏,但一栏就足够了。
"1625110,待开发票,587,正常,""Doe, John"",..."
所以我需要做的并且不知道如何从每行的开头和结尾删除 " 并在每行中用数据""
替换"
。
我需要在 Power Query 中执行此操作,因为随着时间的推移会有更多类似的 CSV 文件,我不想手动清理它们。
有任何想法吗?
我尝试简单:
= Table.AddColumn(#"Removed Other Columns", "Custom", each Csv.Document(
[Content],
[
Delimiter = ",",
QuoteStyle = QuoteStyle.Csv
]
))
解决方案
尝试先加载到单列,替换值以删除多余的引号,然后用","
.
这是加载单个文件的样子:
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"
我使用制表符分隔符来防止它在第一步中分裂。
推荐阅读
- mysql - 按 rand 限制和排序 - 分组
- design-patterns - 使用多个装饰器时如何实现装饰器模式
- flutter - FLUTTER 中的小部件与属性的值
- java - 如何从 ND4j 中的 NDArray 中选择给定的一组索引,类似于 numpy 的 arraydata[arrayIndex]?
- python - 通过进行 N 次交换生成所有可能的组合
- json - 通过 MQTT 接收 JSON 文件
- c# - 玩家通过 x 轴上的触摸输入移动但不影响其他轴
- flutter - 如何使用 Flutter 访问多页 API?
- apache-spark - 如何使用 Spark Streaming 更新 parquet 文件?
- algorithm - 凸包算法确定三角形内的点