我目前正在使用python进行编码,但我遇到了问题; 我有一个名为data的字符串和三个整数(a,b,c)。
data = "{1,2,3}"
a = 0
b = 0
c = 0
我想从数据变量中获取数字,并将它们放入a,b,c中,如下所示:
data = "{1,2,3}"
a = 1
b = 2
c = 3
我该怎么做?
答案 0 :(得分:2)
{1,2,3}
是有效的Python代码。不幸的是,在评估时,它会为您提供一个没有订单的set
。评估字符串'{1,2,3}'
,我们最终会得到{3,1,2}
。但我们可以为括号切换那些花括号,我们得到(1,2,3)
tuple
!元组保持秩序。更好的是我们可以通过分配解压缩它们:
>>> import ast
>>> data = "{1,2,3}"
>>> data = data.replace('{','(').replace('}',')') # make it look like a tuple
>>> data_as_tuple = ast.literal_eval(data) # safe "eval". don't do: eval(data)
>>> a, b, c = data_as_tuple # unpack tuple via assignment
>>> a
1
>>> b
2
>>> c
3
注意:您可能不需要变量名称a
,b
和c
。如果您需要引入10个而不是3个,该怎么办?你需要再写七个变量名吗?如果a
,b
和c
都代表相同类型的内容,那么最好将它们留作tuple
或list
。然后,您可以为集合创建一个名称,而不必担心为集合中的每个项目指定名称。然后,如果您需要对使用迭代的项目采取措施:
for item in data_as_tuple:
print(item*3) # or whatever
对于downvoters:
初学者通常缺乏搜索答案时使用的术语。如果您不知道将文本分成多个部分称为拆分字符串,您会搜索什么?如果你从未听说过正则表达式,你会如何使用它来绊倒答案?如果您不知道文本可以作为代码进行评估,您将如何进入ast.literal_eval
?
此外,似乎OP尚未在集合中思考,只是变量名称=>值。如果OP想要将数据提取到列表中,那么他的代码将更加健壮,因为他可以处理不同大小的集合。
无论如何,很难解决所有这些问题。如果问题非常简单,我就把OP扔掉了。我认为有动力的学生会在遇到概念时收集这些概念。
就个人而言,我在回答没有付出努力的家庭作业问题时画了一条线。这些问题的不同之处在于OP几乎总有多个子问题可以尝试解决。
答案 1 :(得分:0)
您可以使用几种方法。鉴于您描述的数据格式,我建议采取以下步骤:
Customer.new(customer_params)
def customer_params
params.require(:customer).permit(<list of attributes you want to allow>)
end
)您可以在python的一行中执行此操作:
{}
或者将其分解为步骤:
>>> [int(x) for x in '{1,2,3}'[1:-1].split(',')]
[1, 2, 3]
希望有所帮助。