我正在使用 Python 3。
我需要从输入中获取三个值(以空格分隔)。这些值是一个整数、一个字符串和一个整数。
考虑到字符串可以有多个单词。 如果我设置两个词,它不起作用,因为每个词就像一个值。
我的代码是:
list_a = {}
list_b = []
for i in range(4):
input_values = input("Press {}, {} and {}".format("id1", "name", "id2"))
id1, name, id2 = input_values.split()
list_a["id1"] = id1
list_a["name"] = name
list_a["id2"] = id2
list_b.append(dict(list_a))
print(list_b)
如果我的输入类似于 1 name_ok 0,它就有效。但是,如果我的输入类似于 1 pasta ok 0,则不起作用,因为需要 3 个值,而不是 4。
如何判断两个整数值之间的任意一个字符都是变量名?
抱歉英文xD
请您参考如下方法:
您不一定知道id2 是第三个 参数;这是最后一个 参数。您可以使用 extended iterable unpacking 将所有中间参数收集到一个元组中.一旦你有了中间参数的元组,你就可以将它们重新连接在一起。
id1, *names, id2 = input_valores.split()
list_a["id1"] = int(id1)
list_a["name"] = " ".join(names)
list_a["id2"] = int(id2)
这有点有损,因为它将名称中的任意空白缩减为单个空格; 1、"foo bar" 和 2 来自 "1 foo bar 2" 的结果相同和 "1 foo bar 2",例如。如果这很重要,您可以使用 split 两次:
# This is the technique alluded to in Ignacio Vazquez-Abrams' comment.
id1, rest = input_valores.split(None, 1)
name, id2 = rest.rsplit(None, 1)
rsplit 类似于 split,但从另一端开始。在这两种情况下,None 参数指定默认拆分行为(任意空格),参数 1 将结果限制为单个拆分。结果,第一个和最后一个空间用于拆分;保留中间空间。
