Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串解压为一个/两个变量_Python_Python 3.x_Split - Fatal编程技术网

Python 将字符串解压为一个/两个变量

Python 将字符串解压为一个/两个变量,python,python-3.x,split,Python,Python 3.x,Split,我正在寻找一种将字符串拆分为一个或两个变量的方法 string1 = "one,two" string2 = "one" var1, var2 = string1.split(",") var1, var2 = string2.split(",") 预期结果 var1="one" var2="two" var1="one" var2=None 有点像.getvalue,默认值将默认值设置为None以避免ValueError:需要多个值才能解包 我知道我能做到 if "," in string

我正在寻找一种将字符串拆分为一个或两个变量的方法

string1 = "one,two"
string2 = "one"
var1, var2 = string1.split(",")
var1, var2 = string2.split(",")
预期结果

var1="one" var2="two"
var1="one" var2=None
有点像.getvalue,默认值将默认值设置为None以避免ValueError:需要多个值才能解包

我知道我能做到

if "," in string: 
    split twice 
else: 
    split once
但我正试图找到更好的方法来处理这件事

使用pyhton3,您可以将var2作为要解包的剩余值的列表。如果split没有生成足够的值,该列表将为空

var1, *var2 = "one".split(",")
assert var1 == "one"
assert var2 == []
*ed变量必须是列表中的姓氏,否则,在收集剩余值之前,可以单独解包的前导值数量没有限制。

可以将var2作为要解包的剩余值列表。如果split没有生成足够的值,该列表将为空

var1, *var2 = "one".split(",")
assert var1 == "one"
assert var2 == []

*ed变量必须是列表中的姓氏,否则,在收集剩余值之前,可以单独解包的前导值数量没有限制。

要获得此结果,可以执行以下操作:

string2 = "one"
var1, var2 = (string2.split(",")+[None])[:2]
print(var1) #one
print(var2) #None

我只需在.split生成的列表末尾添加None,然后使用slice获得前2个元素,因此我总是得到2个值。

要获得这样的结果,您可以执行以下操作:

string2 = "one"
var1, var2 = (string2.split(",")+[None])[:2]
print(var1) #one
print(var2) #None

我只需在.split生成的列表末尾添加None,然后使用slice获取前2个元素,因此我总是得到2个值。

定义一个函数,以打印所需字符串作为函数的参数

def req_print(string):
    if string != ',':
       print(var)
    else:
       var1, var2 = string.split(',')
       print(var1, var2)

定义用于打印的函数,所需字符串作为函数的参数

def req_print(string):
    if string != ',':
       print(var)
    else:
       var1, var2 = string.split(',')
       print(var1, var2)

可以使用三元运算符赋值:

temp = 'one, two'.split(", ")

var1, var2 = temp if len(temp) == 2 else (temp[0], None)
print(var1, var2)
# one two

temp = 'one'.split(", ")

var1, var2 = temp if len(temp) == 2 else (temp[0], None)
print(var1, var2)
# one None

可以使用三元运算符赋值:

temp = 'one, two'.split(", ")

var1, var2 = temp if len(temp) == 2 else (temp[0], None)
print(var1, var2)
# one two

temp = 'one'.split(", ")

var1, var2 = temp if len(temp) == 2 else (temp[0], None)
print(var1, var2)
# one None

请更好地定义;你所陈述的问题,在其核心,是你所概述的最直接的问题。Python不提供这样的功能。如果您想要这样的功能,欢迎您编写函数,将其扩展到您选择的长度;你所陈述的问题,在其核心,是你所概述的最直接的问题。Python不提供这样的功能。如果你想要这样的功能,欢迎你编写函数,将此扩展到您选择的长度。感谢在我的示例中非常有效,因为var1是aws ec2标记名,var2中的任何内容都是我希望我的descripe_实例调用进行筛选的标记值。感谢在我的示例中非常有效,因为var1是aws ec2标记名,var2中的任何内容都是我希望descripe_实例调用进行筛选的标记值。