Python中分割字符串后strip去除首尾空格无效的问题求助
解决字符串分割后去除首尾空格的问题
你的问题出在两个地方:一是代码里有个未定义的变量attr(应该是笔误),二是字符串是不可变类型,i.strip()只会返回一个去掉空格的新字符串,但你没有把这个结果存回列表中,所以原列表的元素根本没被修改。
快速修复方案
最Pythonic的方式是用列表推导式,一行就能搞定:
bow_str = "EMEA | US| APAC| France & étranger| abroad " bow = [item.strip() for item in bow_str.split('|')] print(bow)
输出结果:
['EMEA', 'US', 'APAC', 'France & étranger', 'abroad']
如果你想用循环修改原列表
可以通过索引遍历列表,把strip后的结果重新赋值给对应位置:
bow_str = "EMEA | US| APAC| France & étranger| abroad " bow = bow_str.split('|') # 用索引遍历修改原列表 for idx in range(len(bow)): bow[idx] = bow[idx].strip()
或者用enumerate同时获取索引和元素,代码可读性更强:
for idx, item in enumerate(bow): bow[idx] = item.strip()
额外优化:过滤空字符串
如果你的原字符串可能出现连续的|(比如"EMEA || US"),split后会产生空字符串,这时候可以在列表推导里加个过滤条件:
bow = [item.strip() for item in bow_str.split('|') if item.strip()]
这样就能自动去掉那些strip后为空的元素,避免列表里出现无用的空值。
为什么你的原代码无效?
在Python中,字符串是不可变对象——任何对字符串的修改操作(比如strip()、upper())都不会改变原字符串,而是返回一个新的字符串。你原来的循环里i.strip()只是生成了新字符串,但没有把它存回列表,所以原列表的元素始终是带空格的版本。
内容的提问来源于stack exchange,提问作者Samuel
相关产品推荐
相关产品推荐

