我正在Excel中使用完成我的第一步。我已经将一些数据从PHP导出到一个.csv文件中,并希望将它们导入到excel表中。这对字符串和数字非常有用,但我需要一个改进的Power Query语句来读取数组数据。
PHP字符串数组看起来类似于:
a:3:{i:0;s:4:"Text";i:1;s:2:"in";i:2;s:5:"array";}"a"表示数组name"3"是数组{}表示索引and"s"的数组with"i",表示项的长度(String)"Text"、"in"和"array"是数组中的项,我想解析它们。F 222
我的想法是将PHP数组字符串解析为Power查询列表,并将这些项连接到逗号分隔的字符串中。
最后,我想要这个字符串:
"Text, in, array"我尝试删除a、i、s、;和数字,以获得类似于json字符串的内容:
= Text.Remove([PHP-array],{"0".."9"}),...然后用以下方法解析:
Json.Document([JSON-string])但这似乎不雅,容易出错。
有没有一种方法可以将PHP数组解析为列表,而不是将其序列化为逗号分隔的字符串?
编辑/更新
一个新的想法是只提取引号"之间的字符串并合并它们。它是这样做的:
Table.TransformColumns(#"Column", {{"function", each Text.BetweenDelimiters(_, """", """"), type text}})但这只适用于第一次出现。我需要对每个项目重复一遍,并用逗号分隔它们。但是怎么做呢?在Power查询中有一种循环吗?
发布于 2021-08-31 12:51:56
在PowerQuery中,这可以将来自Column1 of Table1的数据转换为一个名为Custom的新列
分裂成一个基于“
如果数组项包含;,则将其转换为空。
移除所有空
重新组合其余的列表项,分隔为,(空格)

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Custom", each Text.Combine(List.RemoveNulls(List.Transform(Text.Split([Column1], """"), each if not(Text.Contains(_,";")) then _ else null)),", "))
in #"Added Custom"https://stackoverflow.com/questions/68995801
复制相似问题