我正在寻找一种将字符串分成一个或两个变量的方法。
string1 = "one,two"
string2 = "one"
var1, var2 = string1.split(",")
var1, var2 = string2.split(",")
预期结果
var1="one" var2="two"
var1="one" var2=None
有点像.get("value", "default value")
将默认值设置为None
以避免ValueError: need more than 1 value to unpack
我知道我能做到
if "," in string:
split twice
else:
split once
但是我正在尝试找到一种更好的方法来处理
使用pyhton3
答案 0 :(得分:3)
您可以使var2
成为剩余值的列表以便解压。如果split
的值不够,则该列表将为空。
var1, *var2 = "one".split(",")
assert var1 == "one"
assert var2 == []
*
ed变量必须是列表中的姓氏,但是对于在收集剩余值之前可以单独解包多少个前导值没有限制。
答案 1 :(得分:2)
要获得这样的结果,您可以这样做:
string2 = "one"
var1, var2 = (string2.split(",")+[None])[:2]
print(var1) #one
print(var2) #None
我只需在None
产生的list
的末尾添加.split
,然后使用slice
获取前2个元素,因此我总是得到2个值。
答案 2 :(得分:0)
定义一个函数,以所需的字符串作为函数的参数进行打印。
def req_print(string):
if string != ',':
print(var)
else:
var1, var2 = string.split(',')
print(var1, var2)
答案 3 :(得分:0)
您可以使用三元运算符分配:
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