[Py-3] Python修改字符串某位要用replace

核心知识:不能用s[i] = 'a',要用s=s.replace(s[i],'a'),替换多种可以多层嵌套


拿到一串数字:01101011011011110110010101101011011010100011001101110011

觉得像摩斯密码,于是编写如下脚本:

lines = '01101011011011110110010101101011011010100011001101110011'
print(lines.replace('0','.').replace('1','-'))
#replace(A,B,n)表示把A替换成B,从左到右最多n次,n不写就是所有

得到:.--.-.--.--.----.--..-.-.--.-.--.--.-.-...--..--.---..--

后记:解码不出来,原来这题并不是用摩斯解,正解是每8位二进制转ASC码


真题:字符串hacking_for_fun,把其中的 i 和 r 改成 1 输出出来。

line = 'hacking_for_fun'

# 这种做法有问题,发现r时会替换掉上一个line_new,输出hacking_fo1_fun
for i in range(len(line)):
    if(line[i]=='i' or line[i]=='r'):
        line_new = line.replace(line[i],'1')
print(line_new)

# 最笨的办法,用两个for循环规避覆盖
for i in range(len(line)):
    if(line[i]=='i'):
        line_new = line.replace(line[i],'1')
for i in range(len(line)):
    if(line_new[i]=='r'):
        line_new = line_new.replace(line_new[i],'1')
print(line_new)

# 其实放在一个for循环里就行,拆成两个if
for i in range(len(line)):
    if(line[i]=='i'):
        line_new = line.replace(line[i],'1')
    if(line[i]=='r'):
        line_new = line_new.replace(line_new[i],'1')
print(line_new)

# 更适合的解法,另立一个空line_new逐位+
line_new = ''
for i in range(len(line)):
    if(line[i]=='i' or line[i]=='r'):
        line_new = line_new + '1'
    else:
        line_new = line_new + line[i]
print(line_new)

# 最快的解法,其实replace根本不用你去for循环
line_new = line.replace('i','1').replace('r','1')
print(line_new)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值