You need to enable JavaScript to run this app. Power Query无法识别txt文件Tab分隔符,如何修改代码合并多份光谱数据?
优惠活动
大模型
产品
解决方案
定价
更多

Power Query无法识别txt文件Tab分隔符,如何修改代码合并多份光谱数据?

Power Query读取Tab分隔TXT批量合并光谱数据解决方案

你只需修改代码中读取文件内容的AddedFileContents步骤,给Csv.Document指定Tab作为分隔符即可,其余逻辑无需调整。


需修改的代码行

原代码中AddedFileContents步骤为:

AddedFileContents = Table.AddColumn(RemovedColumns, "FileContents", each Csv.Document([Content])),

修改为:

AddedFileContents = Table.AddColumn(RemovedColumns, "FileContents", each Csv.Document([Content], [Delimiter = "#(tab)"])),

完整修改后代码

let
    Source = Folder.Files("C:\Users\xxxxx\Desktop\new"),

    // 筛选仅TXT文件
    FilteredTxt = Table.SelectRows(Source, each [Extension] = ".txt"),

    // 移除无关元数据列
    RemovedColumns = Table.RemoveColumns(FilteredTxt,{"Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),

    // 读取文件内容,指定Tab为分隔符
    AddedFileContents = Table.AddColumn(RemovedColumns, "FileContents", each Csv.Document([Content], [Delimiter = "#(tab)"])),

    // 移除原始二进制内容列
    RemovedBinaryContent = Table.RemoveColumns(AddedFileContents,{"Content"}),

    // 生成列名序号
    #"Added Index" = Table.AddIndexColumn(RemovedBinaryContent, "Index", 2, 1),
    #"Added Prefix" = Table.TransformColumns(#"Added Index", {{"Index", each "Column" & Text.From(_, "en-US"), type text}}),
    #"Renamed Columns" = Table.RenameColumns(#"Added Prefix",{{"Index", "ColumnName"}}),

    ListOfRecords = Table.ToRecords(#"Renamed Columns"),

    // 循环合并所有文件的强度列
    BuildTable = List.Accumulate(ListOfRecords,
                             Table.FromList(ListOfRecords{0}[FileContents][Column1], each{_}),
                             (TableSoFar,NewColumn) => 
                              Table.ExpandTableColumn(Table.NestedJoin(TableSoFar, "Column1", NewColumn[FileContents], "Column1", "Dummy", JoinKind.LeftOuter), "Dummy", {"Column2"}, {NewColumn[ColumnName]})),
    // 按波长升序排序
    #"Sorted Rows" = Table.Sort(BuildTable,{{"Column1", Order.Ascending}})
in
    #"Sorted Rows"

补充说明

  • 你之前尝试修改Table.FromList的参数是错误的,该步骤是从第一个文件提取波长列生成初始表,和分隔符识别无关
  • 后续如果需要自定义列名(比如用文件名作为强度列名),可以保留Name列后替换生成列名的逻辑即可

内容的提问来源于stack exchange,提问作者emir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:39:01