首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Power查询中解析存储为字符串的PHP数组并将项连接到字符串

在Power查询中解析存储为字符串的PHP数组并将项连接到字符串
EN

Stack Overflow用户
提问于 2021-08-31 09:00:59
回答 1查看 143关注 0票数 0

我正在Excel中使用完成我的第一步。我已经将一些数据从PHP导出到一个.csv文件中,并希望将它们导入到excel表中。这对字符串和数字非常有用,但我需要一个改进的Power Query语句来读取数组数据。

PHP字符串数组看起来类似于:

代码语言:javascript
运行
复制
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查询列表,并将这些项连接到逗号分隔的字符串中。

最后,我想要这个字符串:

代码语言:javascript
运行
复制
"Text, in, array"

我尝试删除ais;和数字,以获得类似于json字符串的内容:

代码语言:javascript
运行
复制
= Text.Remove([PHP-array],{"0".."9"}),...

然后用以下方法解析:

代码语言:javascript
运行
复制
Json.Document([JSON-string])

但这似乎不雅,容易出错。

有没有一种方法可以将PHP数组解析为列表,而不是将其序列化为逗号分隔的字符串?

编辑/更新

一个新的想法是只提取引号"之间的字符串并合并它们。它是这样做的:

代码语言:javascript
运行
复制
Table.TransformColumns(#"Column", {{"function", each Text.BetweenDelimiters(_, """", """"), type text}})

但这只适用于第一次出现。我需要对每个项目重复一遍,并用逗号分隔它们。但是怎么做呢?在Power查询中有一种循环吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 12:51:56

在PowerQuery中,这可以将来自Column1 of Table1的数据转换为一个名为Custom的新列

分裂成一个基于“

如果数组项包含;,则将其转换为空。

移除所有空

重新组合其余的列表项,分隔为,(空格)

代码语言:javascript
运行
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68995801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档