【发布时间】:2018-09-08 13:24:29
【问题描述】:
从以下列表理解开始:
new_list = [re.sub(r'replace_a', 'with__b', i)
if not re.findall(r'find_pattern', i, re.M) else
re.sub(r'replace_c', r'with__d', i)
for i in old_list]
现在我想在else 之后添加一个if 条件,它使用re.sub() 替换另一个模式。我试过了:
new_list = [re.sub(r'replace_a', 'with_b', i)
if not re.findall(r'find_pattern', i, re.M) else
(re.sub(r'replace_c', r'with_d', i)
if foo == re.match("pattern", foo))
for i in old_list]
试图找出使用列表推导的正确方法,但没有运气。
【问题讨论】:
-
我认为最后的
if子句需要放在最后,因为它没有关联的else。你可以写出你知道的for循环,或者至少添加一些换行符以使其可读 -
您遇到的错误是什么?我认为您可能只需要添加一个最终的
else,因为它看起来像这种模式而不是stackoverflow.com/a/9987533/1011724。或者,也许尝试删除您最后一个else...if子句周围的括号。但是foo == re.match("pattern", foo)也不依赖于列表理解中的任何内容,所以您是否试图使整个子句以外部事物为条件?编辑您的 Q 以添加换行符,解释您想要的逻辑并删除正则表达式并添加 MCVE。 -
问题不在于列表理解;这是缺少其
else的条件表达式。 -
@Chris_Rands 道歉,添加了换行符。我尝试使用 for 循环,但在将元素附加到新列表时遇到问题。
-
@Dan 是的,正如你所说,它错过了决赛。对于
foo = re.match,我想根据变量的值添加一个附加条件
标签: python python-3.x list-comprehension