将元组的字符串表示形式转换为真正的元组
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/1
和erl_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_scan
和erl_parse
部分是this answer 的副本。
@SteveVinoski 如果任期无效,第一步当然是使任期有效:)
当然,在这种情况下,此问题与this question 重复。
@SteveVinoski,差不多。仍然答案并不完全重复,因为从文件中读取配置是常见任务以上是关于将元组的字符串表示形式转换为真正的元组的主要内容,如果未能解决你的问题,请参考以下文章
如何将元组列表转换为 pandas 数据框,以便每个元组的第一个值代表一列?