Python拆分倍数逗号
我有一个CSV字符串,如下所示: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 问题是我
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我们不是在填充空字符串,而是在删除它们。