Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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_Arrays_Split - Fatal编程技术网

Python拆分倍数逗号

Python拆分倍数逗号,python,arrays,split,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 问题是我

我有一个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)


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

拆分字符串后,您需要删除/过滤空字符串,并且由于您不知道项目的长度,因此可以使用字典来保留字符串

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'

只需将
splitlines
split
一起使用,就可以在我的系统上正常工作 或者你可以试试这个

for lines in foo.splitlines():
    print (lines.split(','))
将产生这个结果

['value0', 'value1', '', '', 'value4']
其中foo是
foo=“value0,value1,,,value4”


虽然我使用的是Python3和
foo.split(',')
也产生了期望的结果

在这种情况下split会创建更小的数组真的吗?如果我拆分
“value0,value1。我不知道OP在做什么这是一个非常简单的正则表达式:
/,+/
@self这与OP想要的正好相反(据我所知),“然后你可以通过简单的索引”而不是复杂的索引来访问你的项目,如果你只需执行
foo=mystr.split(',')
,然后使用
foo[I]
@NullUserException我们想访问一些有名称的项目!不仅仅是整数索引。是的,但是如果你只是在做
var1
var2,
,名称看起来很无用<代码>变量
。最好使用指示符我认为您只是让场景太复杂了,没有必要过滤空字符串。@LingboTang我们不是在填充空字符串,而是在删除它们。