【问题标题】:Split string in a csv python在csv python中拆分字符串
【发布时间】:2015-04-29 17:46:04
【问题描述】:

我列表的每一行都是这样的:

[(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])]

我希望它只打印名称,在本例中为 Vicky。我使用的代码是这样的

for x in numbers:  
    r=str(x)  
    d1= r.split(',')  
    print ('D1', d1)  

然后打印出来:

['[(21', " ['Rodriguez'", " 'Lara'", " 'Vicky'", " '55302292'])]"]

【问题讨论】:

  • 这与 CSV 文件有什么关系?是的,Python 列表和元组对象在语法中使用逗号来分隔不同的值,但这并不能使它们成为 CSV。 :-)
  • 如果它们都具有相同的结构,只需[(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])][0][1][2] :)

标签: python string csv split


【解决方案1】:

不要把你完美的列表变成一个字符串!只需使用索引:

x[0][1][2]

为了说明这是做什么的:

>>> x = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])]
>>> x[0]
(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])
>>> x[0][1]
['Rodriguez', 'Lara', 'Vicky', '55302292']
>>> x[0][1][2]
'Vicky'

每个额外的订阅 ([...]) 都会深入到嵌套结构中; x[0] 从列表中提取元组; x[0][1] 然后访问该元组中的列表值(x[0][0] 将返回 21),x[0][1][2] 将返回 'Vicky',即嵌套列表中的第三个元素。

【讨论】:

    【解决方案2】:

    先获取列表,然后从中提取数据

    >>> list = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])]
    >>> names = list[0][1] 
    >>> names
    ['Rodriguez', 'Lara', 'Vicky', '55302292']
    >>> names[2]
    Vicky
    

    【讨论】:

      【解决方案3】:

      试试这个:

      for x in numbers:
        r=str(x)
        a=r.split(',')
        print (a[3].strip("' "))
      

      【讨论】:

        【解决方案4】:

        您可以迭代您的列表,同时在每次迭代中解包一个元组。这将使它更干净/可读。

        >>> x = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292']), (22, ['Micheal', 'Jackson', 'John', '66302292'])]
        >>> for age, details in x:
        ...     print details[2]
        ... 
        Vicky
        John
        

        【讨论】:

        • 也许你可以在你的回答中附上一些解释它的文字:)?
        猜你喜欢
        • 1970-01-01
        • 2010-10-31
        • 2018-01-25
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        • 1970-01-01
        相关资源
        最近更新 更多