替换字符串中的每个第 n 个字母 [英] Replace every nth letter in a string

查看:59
本文介绍了替换字符串中的每个第 n 个字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个函数来替换字符串中的每个第 n 个字母

def replaceN(str, n):对于范围内的 i(len(str)):n=str[i]newStr=str.replace(n, "*")返回新的Str

但是当我执行它时,只有第一个字母被*替换.我确定有错误,但我看不到.

解决方案

One-liner:

newstring = ''.join("*" if i % n == 0 else char for i, char in enumerate(string, 1))

扩展:

def replace_n(string, n, first=0):字母 = (# i % n == 0 表示这个字母应该被替换"*" 如果 i % n == 0 else char# 迭代索引/值对对于 i, char in enumerate(string, -first))返回''.join(字母)

<预><代码>>>>replace_n("你好世界", 4)'*ell* 世界*ld'>>>replace_n("你好世界", 4, first=-1)'你好*o w*orl*'

I'm writing a function to replace every n-th letter from a string

def replaceN(str, n):
   for i in range(len(str)):
     n=str[i]
     newStr=str.replace(n, "*")
     return newStr

but when i execute it, only the first letter is replaced with a *. I'm sure there is a mistake, but i can't see it.

解决方案

One-liner:

newstring = ''.join("*" if i % n == 0 else char for i, char in enumerate(string, 1))

Expanded:

def replace_n(string, n, first=0):
    letters = (
        # i % n == 0 means this letter should be replaced
        "*" if i % n == 0 else char

        # iterate index/value pairs
        for i, char in enumerate(string, -first)
    )
    return ''.join(letters)

>>> replace_n("hello world", 4)
'*ell* wo*ld'
>>> replace_n("hello world", 4, first=-1)
'hel*o w*orl*'

这篇关于替换字符串中的每个第 n 个字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆