【问题标题】:Python split multiples commaPython拆分多个逗号
【发布时间】:2016-08-05 17:18:53
【问题描述】:

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

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

【问题讨论】:

  • 在这种情况下拆分会创建一个更小的数组 真的吗?如果我拆分"value0,value1,,,value4",我会得到['value0', 'value1', '', '', 'value4'],这是我所期望的
  • 我用的是python 2.7,可以完美拆分。
  • @LingboTang 无论python的版本如何,它的工作方式都是一样的。我不知道 OP 在做什么
  • 这是一个非常简单的正则表达式:/,+/
  • @self 这实际上与 OP 想要的相反(据我了解)

标签: python arrays split


【解决方案1】:

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

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'

【讨论】:

  • "之后,您可以通过 简单索引 轻松访问您的项目" 如果您只执行 foo = mystr.split(',') 然后使用foo[i]
  • @NullUserException 我们想访问一些有名字的项目!不仅仅是整数索引。
  • 没错,但如果你只是在做var1var2, ... varn,这些名称似乎毫无用处。不妨使用索引
  • 我觉得你只是把场景弄得太复杂了,没有必要过滤空字符串。
  • @LingboTang 我们没有填充空字符串,我们正在删除它们。
【解决方案2】:

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

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

会产生这个结果

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 2023-01-04
    • 2021-10-04
    • 2015-03-07
    • 2016-09-13
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多