我在下面的代码中使用了一对列表来获取映射,其中一个列表是键,另一个列表是值。非常简单的代码:
defp create_data_map(columns, row) do
Enum.zip(columns, row)
|> Enum.into(%{}, fn {k, v} ->
{String.to_atom(k), v}
end)
end我从一个csv文件中获得这些列表,其中列是第一行,这是标题列表,第二行是其后的任意一行。标题如下所示:
["action", "source_application", "partner_name", "detail", "college_name",
"ipeds_id", "deleted", "deleted_at", "athlete_id", "athlete_email",
"athlete_first_name", "athlete_last_name", "athlete_sport_id",
"athlete_sport_name", "pass_uuid", "coach_id", "coach_id",
"coach_email",
"coach_first_name", "coach_last_name", "coach_position", "coach_sport_id",
"coach_sport_name", "occurred_at"]由于某些原因,在调用String.to_atom/1之后,‘Action键’结束为:"action"。其他密钥都没有这个问题。它们都是正确形成的原子。
我看不出这个操作键与其他键有什么不同,除了它位于列表的开头。
发布于 2017-09-26 04:40:23
使用String.to_atom()进行转换时,Atom有三种不同的显示方式
Atom
上面的3个都是原子。它们之间唯一的区别是字符串的格式化方式。
对于任何也包含特殊字符(如#$%- ... )的普通字符串,将获得
iex> "Atom-" |> String.to_atom
然后,:"Atom-"
functions名称在elixir中如何巧妙地格式化。即字符串以字母开头,其余字符串只能包含字母、数字或三个特殊字符_!@。iex> "Atom" |> String.to_atom在Elixir中,:Atom,,
:Atom,,
Elixir.开头,后跟大写字母,并且只能包含字母。iex> "Elixir.Atom" |> String.to_atomAtom
发布于 2017-08-30 16:34:31
当inspect/1将您的原子呈现为:"hello world"时,原子的名称包含诸如空格、点或大写字母之类的字符。
可以看出为什么不能将上面的原子引用为:hello world,因为它会将world解释为变量。
它们仍然是有效的原子,尽管在您的代码中使用它们可能会更加困难。
https://stackoverflow.com/questions/45923933
复制相似问题