列表理解和三元运算符 -> SyntaxError

List comprehension & ternary operator -> SyntaxError

texttypescope是string,valaltval是int,为什么下面的代码语法不正确? (我知道这不是正确的审美方式,但这会影响语法吗?)

result = [(i[val:] if scope=="before" else i[:val] if scope=="after" else i[val:altval] if scope=="beforeafter" else i) if j<=until for j,i in enumerate(text.split("\n"))]

细分为几行:

result = [ 
(i[val:] if scope=="before"
else i[:val] if scope=="after"
else i[val:altval] if scope=="beforeafter"
else i) if j<=until
for j,i in enumerate(text.split("\n"))]

将行拆分成这样,SyntaxError 在最后一行:

for j,i in enumerate(text.split("\n"))]
^

版本:Python3.x
系统:Windows

我错过了什么?是列表理解限制吗?

只需将最后一个if条件移动到for之后:

result = [
   (
    i[val:] if scope=="before"
    else i[:val] if scope=="after"
    else i[val:altval] if scope=="beforeafter"
    else i
   ) for j, i in enumerate(text.split("\n"))
   if j <= until
]

Online Demo