re.findall(r"(\S+)(\s*)", " Alice, Bob Charlie ")
со знаком +
после \S
возвращает то, что вы, вероятно, хотите:
[('Alice,', ' '), ('Bob', ' '), ('Charlie', ' ')]
в противном случае \S*\s*
может совпадать с пустой строкой в конце: ноль или больше и ноль или больше могут также равняться длине нуля.
Другая возможность (кроме .pop()
) будет:
[a for a in re.findall(r"(\S*)(\s*)", " Alice, Bob Charlie ") if a != ('','')]
или
re.findall(r"(\S*)(\s*)", " Alice, Bob Charlie ")[:-1]
оба возвращают именно то, что вам нужно (включая пробел в начале):
[('', ' '), ('Alice,', ' '), ('Bob', ' '), ('Charlie', ' ')]