Python:从两个单独的行读取,创建两个列表

时间:2016-04-27 05:15:41

标签: python python-2.7

我正在读取txt文件:(格式如下所示)

  

(+ 1 +2 +3 +4)

     

( - 4 -9)( - 3 -6 -7)

我想要的输出是两个(整数)列表

两者都在 \ n 之前和之后。

示例:

BEFORE_LIST = [1,2,3,4] 

AFTER_LIST = [[-4,-9] , [-3, -6, -7]]

我无法弄清楚裂缝和条带的正确组合,以实现这一目标。

任何帮助我都非常感激。

2 个答案:

答案 0 :(得分:2)

listOfValues = (x.split(' ')for x in (val.replace(')','') for val in input().split('(')))
listOfIntegers = list(filter(None, [[int(value) for value in values if isInt(value)]for values in listOfValues]))

print(listOfIntegers)

is isInt方法可以定义为:

def isInt(s):
    try:
        int(s)
        return True
    except:
        return False

或者是一个避免异常的更精细的解决方案:

def isInt(s):
    return s.replace('+').replace('-').isdecimal() // doesn't cover all cases 

这不会检查无效的输入格式(例如,无法匹配的paranthesis)。

答案 1 :(得分:1)

会吗?

list2 = sorted(quiz)

输出:

import re
from ast import literal_eval
with open('test','r') as f:
    for line in f:
        line = line.replace(' ',',').replace('+','')
        my_list = re.findall(r'\(.+?\)',line)
        result = [list(literal_eval(i)) for i in my_list]
        if len(result)==1:
            result = [i for term in result for i in term ]

        print result