将元组的字符串表示形式转换为真正的元组

Posted

技术标签:

【中文标题】将元组的字符串表示形式转换为真正的元组【英文标题】:Convert a string representation of a tuple to a real tuple 【发布时间】:2015-12-19 22:11:26 【问题描述】:

如何将这个字符串"[type,a,to,room01023123,body,hey what's up mister,by,someone]"转换成这样的元组["type","a","to","room01023123","body","hey what's up mister","by","someone"]

【问题讨论】:

这不是一个有效的 Erlang 元组,特别是 body,hey what's up mister 部分。这只是虚构的例子吗? 你想用 Erlang 还是 Elixir 做? 如果您修复了字符串中的引号以使其有效,并在字符串末尾添加一个句点,如下所示:"[\"type\",\"a\",\"to\",\"room01023123\",\"body\",\"hey what's up mister\",\"by\",\"someone\"]." 那么您可以使用erl_scan:string/1erl_parse:parse_term/1 作为在this question. @PatrickOscity 抱歉,我删除了 elixir 标签,它是用于 erlang 的 【参考方案1】:

如果您需要从文件中读取,只需使用file:consult

-spec consult(Filename) -> ok, Terms | error, Reason

否则,您可以为此使用 erl_parse 模块和 erl_scan。像这样最简单的情况

ok, Tokens, _Line = erl_scan:string("hello, world."),
erl_parse:parse_term(Tokens).

别忘了术语应该以句号结尾。

【讨论】:

file:consult/1 在这种情况下不起作用,因为该术语无效。而答案的erl_scanerl_parse 部分是this answer 的副本。 @SteveVinoski 如果任期无效,第一步当然是使任期有效:) 当然,在这种情况下,此问题与this question 重复。 @SteveVinoski,差不多。仍然答案并不完全重复,因为从文件中读取配置是常见任务

以上是关于将元组的字符串表示形式转换为真正的元组的主要内容,如果未能解决你的问题,请参考以下文章

如何将元组列表转换为 pandas 数据框,以便每个元组的第一个值代表一列?

使用 SwiftyJSON 将元组数组转换为 JSON 字符串

将元组条目变量转换为数学问题的 int 的问题

将元组列表的字典转换为数据框

将元组的无序列表转换为 pandas DataFrame

字典 元组