【问题标题】:Convert strings from input file to tuple list将字符串从输入文件转换为元组列表
【发布时间】:2018-04-23 08:35:52
【问题描述】:

我有一个输入文件,其中包含:

TEST.JOB
TEST.LAST_LOGIN,10
TEST.DATA,12
TEST.QUEUE_PARAM,09
TEST.ENTITY_PROFILE

我期望返回如下元组列表:

[('TEST','JOB'),('TEST','LAST_LOGIN','10'),('TEST','DATA','12'), .....]

请告知如何实现这一目标。

【问题讨论】:

    标签: python string python-2.7


    【解决方案1】:

    我只是在编辑 Yassine Faris 的帖子,但它已被删除。这实际上是缺少代码的正确答案。

    with open("input_file.txt") as f:
        lines = f.readlines()
        # It will going to split string from every dot and comma
        result = [tuple(l.strip().replace(',', '.').split(".")) for l in lines]
        # Result: [('TEST', 'JOB'), ('TEST', 'LAST_LOGIN', '10'), ('TEST', 'DATA', '12'), ('TEST', 'QUEUE_PARAM', '09'), ('TEST', 'ENTITY_PROFILE')]
    

    【讨论】:

      【解决方案2】:

      这是一种方式。

      # extract date into list of lists prior to this logic
      lst = ['TEST.JOB',
             'TEST.LAST_LOGIN,10',
             'TEST.DATA,12',
             'TEST.QUEUE_PARAM,09',
             'TEST.ENTITY_PROFILE']
      
      # initialise list
      res = []
      
      # iterate and append
      for item in lst:
          cat, detail = item.split('.')
          app = [cat] + detail.split(',')
          res.append(app)
      
      # convert list of lists to list of tuples
      res = list(map(tuple, res))
      

      结果:

      [('TEST', 'JOB'),
       ('TEST', 'LAST_LOGIN', '10'),
       ('TEST', 'DATA', '12'),
       ('TEST', 'QUEUE_PARAM', '09'),
       ('TEST', 'ENTITY_PROFILE')]
      

      【讨论】:

        【解决方案3】:

        一个简单的单行:

        lst = ['TEST.JOB',
               'TEST.LAST_LOGIN,10',
               'TEST.DATA,12',
               'TEST.QUEUE_PARAM,09',
               'TEST.ENTITY_PROFILE']
         result = [tuple(line.replace('.',' ').replace(',',' ').split()) for line in lst]
         print(result)
        

        结果:

        [('TEST', 'JOB'), ('TEST', 'LAST_LOGIN', '10'), ('TEST', 'DATA', '12'), ('TEST', 'QUEUE_PARAM', '09'), ('TEST', 'ENTITY_PROFILE')]
        

        【讨论】:

          【解决方案4】:
          Use regular expressions to split with multiple deliminator.
          
          import re
          with open('input_file.txt') as f:
              data = [tuple(re.split("\.|\,", val.strip())) for val in f.readlines()]
          
          #Output
          [('TEST', 'JOB'), ('TEST', 'LAST_LOGIN', '10'), ('TEST', 'DATA', '12'), ('TEST', 'QUEUE_PARAM', '09'), ('TEST', 'ENTITY_PROFILE')]
          

          【讨论】:

            猜你喜欢
            • 2013-04-22
            • 1970-01-01
            • 2012-01-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多