list comprehension python中逗号分隔的项目

时间:2018-02-06 11:44:33

标签: python python-3.x

我有以下代码:

 read_files = glob.glob("*.log")

 with open("result.txt", "wb") as outfile:
    for f in read_files:
      with open(f, "rb") as infile:
         outfile.write(infile.read())       

 with open("result.txt", encoding="utf8") as f:
    b = f.readlines()   

 c=[re.findall('\d+ \d+ \d+ \d+ \d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}',i) for i in b]
 c=[i  for i in c if i!=[]]

现在,如果我尝试执行以下操作,

 [i[0].split(' ')[0],i[0].split(' ')[1],i[0].split(' ')[4] for i in c]

我收到了轰鸣声错误:

 SyntaxError: invalid syntax

任何人都可以提供帮助

2 个答案:

答案 0 :(得分:2)

您需要添加括号才能创建元组列表:

[(i[0].split(' ')[0],i[0].split(' ')[1],i[0].split(' ')[4]) for i in c]

但是对于每个i,您仍然不必要多次执行相同的拆分操作。为了获得更好的性能和可读性,您可以这样做:

[(x[0], x[1], x[4]) for x in (i[0].split(' ') for i in c)]

答案 1 :(得分:0)

尝试用括号括起参数:

 [ (i[0].split(' ')[0],i[0].split(' ')[1],i[0].split(' ')[4]) for i in c]

所以它列出了元组。

你能提供更多细节吗?就像打印出变量c

一样