为何Python中replace方法无法去除空格?求助问题原因
问题分析与解决
你的代码存在两个核心问题,导致空格无法被去除:
1. 字符串不可变性导致replace未生效
Python中的字符串是不可变对象,num.replace(' ', '')会生成一个新的无空格字符串,但你没有将这个新值存回列表,原列表的元素自然不会改变。
2. 遍历临时变量无法修改原列表
for num in nums中的num是列表元素的临时副本,修改这个副本不会对原列表nums产生任何影响。
修正方案一:通过索引遍历并重新赋值
直接通过索引访问列表元素,将replace后的新字符串存回原位置:
import re num_list = ('255 +1', '282 +5', '255 + 3', '5 - 2',) for i in num_list: nums = re.split(r'[+,-]\s*', i) # 用索引遍历,直接修改原列表元素 for idx in range(len(nums)): nums[idx] = nums[idx].replace(' ', '') print(nums)
修正方案二:优化正则表达式,一步分割出无空格数字
直接在分割规则中处理掉数字前后的空格,省去后续去空格的步骤:
import re num_list = ('255 +1', '282 +5', '255 + 3', '5 - 2',) for i in num_list: # 正则匹配分割符前后的所有空格,分割后直接得到无空格数字 nums = re.split(r'\s*[+-]\s*', i) print(nums)
注:原代码中用list作为变量名不合适,因为list是Python内置类型,这里改为num_list避免命名冲突。
内容的提问来源于stack exchange,提问作者Ricky Bascom
相关产品推荐
相关产品推荐

