Python拆分倍数逗号

时间:2016-08-05 17:18:54

标签: python arrays split

我有一个像这样的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相关联。)

有没有办法强制拆分创建空元素?感谢您的任何提示。

2 个答案:

答案 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)

只需将splitlinessplit一起使用,它就可以在我的系统上正常运行 或者你可以试试这个

for lines in foo.splitlines():
    print (lines.split(','))

将产生此结果

['value0', 'value1', '', '', 'value4']

其中foo是foo = "value0,value1,,,value4"

虽然我使用的是python 3,foo.split(',')也产生了预期的结果