【问题标题】:How to print first element in list of string which is delimited by Pipe symbol in python如何打印由python中的管道符号分隔的字符串列表中的第一个元素
【发布时间】:2017-10-31 22:36:24
【问题描述】:

如何从每个管道分隔符值中获取第一个元素。

test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|

例如:我想像这样打印输出:

test-123-2
lskd-929-8282
ploi-90293-2
opuye-8392-kl

我尝试过这样的事情:

value=test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|
result = value.split('|')
restult[0]

但它没有达到我预期的输出。有人可以指导我如何打印由管道符号分隔的每一列中的所有第一个元素

提前致谢。

【问题讨论】:

    标签: python string split delimiter


    【解决方案1】:

    split(',')split('|') 组合起来,如下所示:

    res = [w.split(',')[0] for w in s.split('|')]
    

    输出:

    >>> for v in res[:-1]:
    ...     print(v)
    ... 
    test-123-2
    lskd-929-8282
    ploi-90293-2
    opuye-8392-kl
    

    【讨论】:

      【解决方案2】:

      我们可以进行双重拆分,注意空值。试试这个:

      s = 'test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|'
      result = [data.split(',')[0] for data in s.split('|') if data]
      

      现在result 包含预期值,因此您可以对它们进行您需要的操作:

      result
      => ['test-123-2', 'lskd-929-8282', 'ploi-90293-2', 'opuye-8392-kl']
      

      【讨论】:

        【解决方案3】:

        不使用列表理解的另一种不太优雅的方法是:

        test = "test-123-2,abc,1232,,21,fd|lskd-929-8282,vbd,3221,,983,ew|ploi-90293-2,xsw,9073,,34,mn|opuye-8392-kl,few,45432,,234,df|"
        
        result = list(map(lambda y: y.split(',')[0], list(map(lambda x: x, test.split('|')))))
        
        for r in result:
            print(r)
        

        结果是:

        test-123-2
        lskd-929-8282
        ploi-90293-2
        opuye-8392-kl
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-15
          • 1970-01-01
          • 1970-01-01
          • 2010-09-14
          • 2021-02-27
          • 2021-10-10
          相关资源
          最近更新 更多