You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:50:29