在Python中如何修改字符串中的某一位字符?

python中字符串是不可变类型,即无法直接修改字符串的某一位字符。

例如想把'abc123'修改成'abcd23',若执行下面代码:

a = 'abc123'
a[3] = 'd'  # 字符串下标是从0开始的,3代表第4个字符

会报错:

TypeError: 'str' object does not support item assignment

因为python语法中,字符串不支持直接赋值。

我们在编程时会经常遇到处理字符串,python修改字符串主要有3种方法:切片法、重新赋值和replace函数。

设当前字符串a = 'abc123',想要修改成'abcd123'。

法一:切片法

把字符串“切开”,在需要的地方添加进去新字符,再用加号连接。

# 法一:切片
# 设当前字符串a = "abc123",想要修改成"abcd123"
a = 'abc123'
a = a[:3] + 'd' + a[3:6]    # [m:n]代表从下标m开始到下标n-1的字符;不写m的话默认为0
# 此处相当于取出来'abc',再后面加上'd',再加上'123'
print(a)        # 输出abcd123

法二:重新赋值

最简单粗暴的方法,直接覆盖掉原变量。

但其实变量并没有真的被“修改”,前后变量a占用的是不同的内存指针。可以用 id(a) 观察实际的内存指针。

# 法二:重新赋值
# 设当前字符串a = "abc123",想要修改成"abcd123"
a = 'abc123'
print(id(a))
a = 'abcd123'
print(id(a))
print(a)        # 输出abcd123

执行上面代码,得到的输出是:

2138944357488
2138944252016
abcd123

可以看到,最终得到了我们想要的字符串'abcd123'。但前后变量a的内存并不相同。

这说明原本的a并没有被修改,而是被配置到了新的内存。

对于新手来说,不需要在此太纠结,能达到修改目的即可。感兴趣的同学可以去查阅python的内存机制。

法三:replace函数

python自带的replace函数,能替换掉指定的部分。

a = a.replace('c', 'cd')意味着把a中的'c'改为'cd'。

a = 'abc123'
a = a.replace('c', 'cd')
print(a)        # 输出abcd123

该方法的缺点是,必须知道要修改的位置的字符究竟是什么。

如果字符串始终在变化,那么还是需要靠切片法根据下标来修改。

你可能感兴趣的:(数学建模,MATLAB,算法,数学建模,python)