将字符串从输入文件转换为元组列表

时间:2018-04-23 08:35:52

标签: python string python-2.7

我有一个输入文件&它包含:

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'), .....]

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

4 个答案:

答案 0 :(得分: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')]

答案 1 :(得分:0)

这是一种方式。

# 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')]

答案 2 :(得分:0)

简单的单行:

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')]

答案 3 :(得分:0)

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')]