在下面的代码块中,我知道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']
答案 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。