对于我的一个作业,我必须用字符串替换我选择的另一个字符的标记字符。哦,但是replace()不是一个选项
我是新手,所以请不要把我分开太多:)
def myReplace(content,token,new):
content = list(content)
newContent = []
newContent = list(newContent)
for item in content:
if item == token:
item = ''
newContent[item].append[new]
return newContent
根据上述内容,目的是检查字符串中的每个字母是否与令牌字符匹配,如果匹配,则替换为新字母。
我不知道我需要添加什么,或者我做错了什么。
答案 0 :(得分:3)
好吧,因为字符串是可迭代的,所以你可以这样做:
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'
说明:每当遇到旧字符时,它使用generator expression发出新字符,并使用str.join
连接该表达式而不使用分隔符(实际上为空)字符串分隔符。)
旁注:您实际上无法改变字符串,这就是为什么所有解决方案都必须构造一个新字符串。
答案 1 :(得分:2)
使用index()查找字符。 连接正面,新的字符和背面。
pos = str.index(old_char)
newStr = str[:pos] + new_char + str[pos+1:]
如果你有多次出现的old_char,你可以迭代直到它们全部完成,或者把它放到一个函数中并重复出现在字符串的后面。
答案 2 :(得分:1)
您可以遍历每个角色并替换您的令牌角色。你可以通过构建一个字符串来实现这个目的:
token = "$"
repl = "!"
s = "Hello, world$"
new_s = ""
for ch in s:
if ch == token:
new_s += repl
else:
new_s += ch
或使用str.join
def replacech(s, token, repl):
for ch in s:
if ch == token:
yield repl
else:
yield ch
s = "Hello, World$"
new_s = ''.join(replacech(s, "$", "!"))
答案 3 :(得分:0)
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
答案 4 :(得分:0)
使用正则表达式:
import re
token = '-'
str = 'foo-bar'
new_str = re.sub(token, '', str)
这导致:
boobar
答案 5 :(得分:0)
如果你知道translate()和string.maketrans()
,那就是单线程def myReplace(content, token, new):
# Note: assumes token and new are single-character strings
return content.translate(string.maketrans(token, new))