我有一个像这样的CSV字符串:
foo = "value0,value1,value2,value3,value4".split(",")
test(foo)
我正在使用split将此字符串拆分为数组。然后我有一个函数接受数组并将这些值赋给一些内部变量:
def test(foo):
var0 = foo[0]
var1 = foo[1]
var2 = foo[2]
var3 = foo[3]
var4 = foo[4]
return
问题在于我可能会有一些缺失值:
foo = "value0,value1,,,value4".split(",")
在这种情况下拆分会创建一个更小的数组:
print(foo) # ['value0','value1','value4']
因此,当我调用我的函数时,它不起作用,并且value4与var2错误地关联(它应该与var4相关联。)
有没有办法强制拆分创建空元素?感谢您的任何提示。
答案 0 :(得分:0)
分割字符串后,您需要删除/过滤空字符串,并且由于您不知道项目的长度,因此您可以使用字典来保留字符串。
my_vars = {'var{}'.format(i):j for i, j in enumerate(mystr.split(',')) if j}
这是一个演示:
>>> foo = "value0,value1,,,value4"
>>> my_vars = {'var{}'.format(i):j for i, j in enumerate(foo.split(',')) if j}
>>> my_vars
{'var4': 'value4', 'var1': 'value1', 'var0': 'value0'}
之后,您只需使用简单的索引即可访问您的项目:
>>> my_vars['var1']
'value1'
答案 1 :(得分:0)
只需将splitlines
与split
一起使用,它就可以在我的系统上正常运行
或者你可以试试这个
for lines in foo.splitlines():
print (lines.split(','))
将产生此结果
['value0', 'value1', '', '', 'value4']
其中foo是foo = "value0,value1,,,value4"
虽然我使用的是python 3,foo.split(',')
也产生了预期的结果