我正在读取txt文件:(格式如下所示)
(+ 1 +2 +3 +4)
( - 4 -9)( - 3 -6 -7)
我想要的输出是两个(整数)列表
两者都在 \ n 之前和之后。
示例:
BEFORE_LIST = [1,2,3,4]
AFTER_LIST = [[-4,-9] , [-3, -6, -7]]
我无法弄清楚裂缝和条带的正确组合,以实现这一目标。
任何帮助我都非常感激。
答案 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