Python程序append后出现多余空字符串的问题求解
解决列表末尾多出空字符串的问题
这个问题其实是因为你的代码逻辑顺序搞反啦😉——现在的流程是不管输入啥,先处理再加入列表,之后才判断是否要终止循环。当你输入空字符串时,它会先把处理后的空字符串添加到列表里,然后才触发break,所以最后就多了个空元素。
最优雅的修复方案
调整逻辑顺序,先判断输入是否为空,为空直接终止循环;非空的情况下再处理并添加到列表:
import re filenames = [] while True: filename_input = input("Filename? ") # 先检查是否为空输入,是的话直接退出循环 if filename_input == "": break # 非空输入才执行处理和添加操作 pattern = r'\[.*?\]' re_filename = re.sub(pattern, "", filename_input) filenames.append(re_filename) print(filenames)
另一种可选方案(不推荐)
如果不想调整顺序,也可以在循环结束后移除最后一个空元素,但这种写法不如上面的优雅,而且如果用户不小心连续输入两次空字符串可能会出问题:
import re filenames = [] while True: filename_input = input("Filename? ") pattern = r'\[.*?\]' re_filename = re.sub(pattern,"",filename_input) filenames.append(re_filename) if filename_input == "": break # 移除最后一个空元素 filenames.pop() print(filenames)
推荐用第一种方案,因为它从根源上避免了空元素被加入列表,逻辑更清晰。
内容的提问来源于stack exchange,提问作者RubikSquare
相关产品推荐
相关产品推荐

