Python:除了用replace()替换字符串中的字符外,有没有一种简单的替换方法

Python:除了用replace()替换字符串中的字符外,有没有一种简单的替换方法,python,string,list,replace,Python,String,List,Replace,对于我的一个作业,我必须用我选择的另一个字符替换一个标记字符,即字符串。哦,但是replace()不是一个选项 我是新来的,所以请不要把我撕得太厉害:) 使用上述方法,目的是检查字符串中的每个字母是否与标记字符匹配,如果匹配,则用新字母替换 我不知道我需要添加什么,或者我做错了什么。既然字符串是可编辑的,你可以这样做: def my_replace(original, old, new): return "".join(x if not x == old else new for x i

对于我的一个作业,我必须用我选择的另一个字符替换一个标记字符,即字符串。哦,但是replace()不是一个选项

我是新来的,所以请不要把我撕得太厉害:)

使用上述方法,目的是检查字符串中的每个字母是否与标记字符匹配,如果匹配,则用新字母替换


我不知道我需要添加什么,或者我做错了什么。

既然字符串是可编辑的,你可以这样做:

def my_replace(original, old, new):
    return "".join(x if not x == old else new for x in original)
例如:

>>> my_replace("reutsharabani", "r", "7")
'7eutsha7abani'
解释:每当遇到旧字符时,使用一个来发出新字符,并使用
str.join
来连接该表达式,而不使用分隔符(实际上是空字符串分隔符)


旁注:您实际上无法对字符串进行变异,这就是为什么所有解决方案都必须构造新字符串的原因。

既然字符串是可编辑的,您可以这样做:

def my_replace(original, old, new):
    return "".join(x if not x == old else new for x in original)
例如:

>>> my_replace("reutsharabani", "r", "7")
'7eutsha7abani'
解释:每当遇到旧字符时,使用一个来发出新字符,并使用
str.join
来连接该表达式,而不使用分隔符(实际上是空字符串分隔符)


旁注:您实际上无法对字符串进行变异,这就是为什么所有解决方案都必须构造一个新字符串。

您可以遍历每个字符并替换您的标记字符。您可以通过构建字符串来实现这一点:

token = "$"
repl = "!"
s = "Hello, world$"

new_s = ""

for ch in s: 
    if ch == token:
        new_s += repl
    else:
        new_s += ch
或者使用带有


您可以遍历每个字符并替换标记字符。您可以通过构建字符串来实现这一点:

token = "$"
repl = "!"
s = "Hello, world$"

new_s = ""

for ch in s: 
    if ch == token:
        new_s += repl
    else:
        new_s += ch
或者使用带有


查找具有索引()的字符。 连接前面、新字符和后面

pos = str.index(old_char)
newStr = str[:pos] + new_char + str[pos+1:]

如果旧字符不止一次出现,则可以迭代直到全部完成,或者将其放入函数并在字符串的后面重复出现。

使用index()查找字符。
def repl(st,token,new):
    ind = st.index(token)
    st = st[:ind] + new +st[ind + len(new):]
    return st

print(repl("anaconda","co","bo"))

anabonda
连接前面、新字符和后面

pos = str.index(old_char)
newStr = str[:pos] + new_char + str[pos+1:]

如果有多个old_char出现,则可以进行迭代,直到全部完成,或者将其放入函数并在字符串的后面重复出现。

使用正则表达式:

def repl(st,token,new):
    ind = st.index(token)
    st = st[:ind] + new +st[ind + len(new):]
    return st

print(repl("anaconda","co","bo"))

anabonda
import re

token = '-'
str = 'foo-bar'
new_str = re.sub(token, '', str)
这导致:

boobar

使用正则表达式:

import re

token = '-'
str = 'foo-bar'
new_str = re.sub(token, '', str)
这导致:

boobar

如果您知道translate()和string.maketrans()的话,只需一行代码


如果您知道translate()和string.maketrans()的话,只需一行代码