列表理解在此代码块中如何工作?

时间:2019-05-09 10:11:55

标签: python regex list split list-comprehension

在下面的代码块中,我知道s是字符串。 re.split()将生成一个拆分结果列表,并且列表理解将遍历创建的每个结果。

我不明白“如果我”在这里如何工作。

这来自以下堆栈溢出线程:https://stackoverflow.com/a/28290501/11292262

s = '125km'
>>> [i for i in re.split(r'([A-Za-z]+)', s) if i]
['125', 'km']
>>> [i for i in re.split(r'(\d+)', s) if i]
['125', 'km']

1 个答案:

答案 0 :(得分:2)

空字符串的求值为False。请注意,当我们取出if时会发生什么:

import re
s = '125km'

print(re.split(r'([A-Za-z]+)', s))
print(re.split(r'(\d+)', s))

输出:

['125', 'km', '']
['', '125', 'km']

根据该问题,if用于删除不需要的空字符串。请注意,两个表达式中的捕获组都是必需的,以确保the part of the string split on (value or unit) is also returned