Python 3中替换", "为","时遇到异常问题求助
解决Python字符串replace后原字符串未更新的问题
嘿,这个坑我刚学Python的时候也踩过!问题出在Python字符串的不可变性上——这是Python里字符串的核心特性之一。
为什么print(myString)还是老样子?
你调用的myString.replace(', ' , ',')确实完成了替换操作,但它不会直接修改原来的myString变量。因为在Python中,字符串是不可变对象:一旦创建,就不能被修改。所有字符串操作方法(比如replace()、strip()、upper())都会返回一个全新的字符串对象,而原字符串会保持原样。
你现在只是调用了replace()但没把返回的新字符串存起来,所以原变量myString自然还是初始的那个带空格的版本。
正确的做法
有两种简单的解决方式:
1. 将替换结果重新赋值给原变量
把replace()返回的新字符串存回myString,这样后续使用myString时就是修改后的版本了:
myString = 'X 2751.4, Y 836.0,Z -675.2,A -135.10,B 3.75,C 176.0' # 把替换后的新字符串覆盖原变量 myString = myString.replace(', ' , ',') print(myString) # 输出:X 2751.4,Y 836.0,Z -675.2,A -135.10,B 3.75,C 176.0
2. 直接打印replace的返回值
如果不需要保留修改后的字符串,只是想查看结果,可以直接打印replace()的返回值:
myString = 'X 2751.4, Y 836.0,Z -675.2,A -135.10,B 3.75,C 176.0' print(myString.replace(', ' , ',')) # 直接输出修改后的结果
额外小提示
如果你需要处理更复杂的空格情况(比如逗号前后可能有多个空格),可以用正则表达式的re.sub()来处理:
import re myString = 'X 2751.4, Y 836.0,Z -675.2,A -135.10,B 3.75,C 176.0' # 替换逗号后任意数量的空格为逗号 myString = re.sub(r',\s+', ',', myString) print(myString) # 输出:X 2751.4,Y 836.0,Z -675.2,A-135.10,B 3.75,C 176.0
内容的提问来源于stack exchange,提问作者William McMillan
相关产品推荐
相关产品推荐

