首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python中替换字符串的一部分?

如何在python中替换字符串的一部分?
EN

Stack Overflow用户
提问于 2010-08-24 02:04:11
回答 5查看 40.3K关注 0票数 8

如何在Python中替换另一个字符串中的一组字符?

下面是我正在尝试做的事情:假设我有一个字符串'abcdefghijkl‘,并想用A替换结束符号(k)中的2-d。我收到一个错误:

代码语言:javascript
复制
>>> aa = 'abcdefghijkl'
>>> print aa[-2]
k
>>> aa[-2]='A'

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    aa[-2]='A'
TypeError: 'str' object does not support item assignment

那么,问题是:有没有一种优雅的方法来替换(替换)从指定位置开始的另一个字符串中的字符串符号?类似于:

代码语言:javascript
复制
# subst(whole_string,symbols_to_substiture_with,starting_position)

>>> print aa
abcdefghijkl
>>> aa = subst(aa,'A',-2)
>>> print aa
abcdefghijAl

subst的非暴力代码是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-24 02:07:57

如果你要替换的总是同一个位置,你可以这样做:

代码语言:javascript
复制
>>> s = s[0:-2] + "A" + s[-1:]
>>> print s
abcdefghijAl

在一般情况下,您可以这样做:

代码语言:javascript
复制
>>> rindex = -2 #Second to the last letter
>>> s = s[0:rindex] + "A" + s[rindex+1:]
>>> print s
abcdefghijAl

编辑:的一般情况下,如果你只想在替换中重复一个字母:

代码语言:javascript
复制
>>> s = "abcdefghijkl"
>>> repl_str = "A"
>>> rindex = -4 #Start at 4th character from the end
>>> repl = 3 #Replace 3 characters
>>> s = s[0:rindex] + (repl_str * repl) + s[rindex+repl:]
>>> print s
abcdefghAAAl
票数 15
EN

Stack Overflow用户

发布于 2010-08-24 02:07:06

代码语言:javascript
复制
TypeError: 'str' object does not support item assignment

这是意料之中的-- python字符串是不可变的。

一种方法是做一些切片和切丁。如下所示:

代码语言:javascript
复制
>>> aa = 'abcdefghijkl'
>>> changed  = aa[0:-2] + 'A' + aa[-1]
>>> print changed
abcdefghijAl

连接的结果,changed将是另一个不可变的字符串。请注意,这不是适用于所有替换场景的通用解决方案。

票数 11
EN

Stack Overflow用户

发布于 2010-08-24 02:08:59

你必须将它分割并实例化一个新的字符串,因为字符串是不可变的:

代码语言:javascript
复制
aa = aa[:-2] + 'A' + aa[-1:]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3550327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档