Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将一个字符串连接到另一个字符串中_Python_String - Fatal编程技术网

Python 将一个字符串连接到另一个字符串中

Python 将一个字符串连接到另一个字符串中,python,string,Python,String,我已经完成了这段代码,但是输出不是我想要的 def replace(s,p,n): return "".join("{}".format(p) if not i % n else char for i, char in enumerate(s,1)) print(replace("university","-",3)) 我得到的输出是un-ve-si-y 我必须这样做: uni-ver-sit-y这是一种方法。使用str切片 演示: def replace(s,p,n): r

我已经完成了这段代码,但是输出不是我想要的

def replace(s,p,n):
    return "".join("{}".format(p) if not i % n else char for i, char in enumerate(s,1))

print(replace("university","-",3))
我得到的输出是
un-ve-si-y

我必须这样做:
uni-ver-sit-y

这是一种方法。使用
str
切片

演示:

def replace(s,p,n):
    return p.join([s[i:i+n] for i in range(0, len(s), n)])

print(replace("university","-",3))
uni-ver-sit-y
输出:

def replace(s,p,n):
    return p.join([s[i:i+n] for i in range(0, len(s), n)])

print(replace("university","-",3))
uni-ver-sit-y

这是一种方法。使用
str
切片

演示:

def replace(s,p,n):
    return p.join([s[i:i+n] for i in range(0, len(s), n)])

print(replace("university","-",3))
uni-ver-sit-y
输出:

def replace(s,p,n):
    return p.join([s[i:i+n] for i in range(0, len(s), n)])

print(replace("university","-",3))
uni-ver-sit-y

如果将代码扩展到多行:

chars_to_join = []
for i, char in enumerate(s,1):
    if not i % n:
        chars_to_join.append("{}".format(p))
    else:
        chars_to_join.append(char)
您将看到,当if语句为true时,它将只替换字符,而不是在给定字符之后包含替换字符,因此只需修改格式字符串以包含当前迭代的字符

"{}{}".format(char, p)

如果将代码扩展到多行:

chars_to_join = []
for i, char in enumerate(s,1):
    if not i % n:
        chars_to_join.append("{}".format(p))
    else:
        chars_to_join.append(char)
您将看到,当if语句为true时,它将只替换字符,而不是在给定字符之后包含替换字符,因此只需修改格式字符串以包含当前迭代的字符

"{}{}".format(char, p)

对于这个问题,我认为列表理解不是一个好主意。这还不清楚。也许我们可以通过以下方式更清楚地说明:

def replace(s,p,n):
    new_list = []
    for i, c in enumerate(s, 1):
        new_list.append(c)
        if i % n == 0:
            new_list.append(p)

    return "".join(new_list)


print(replace("university","-",3))

对于这个问题,我认为列表理解不是一个好主意。这还不清楚。也许我们可以通过以下方式更清楚地说明:

def replace(s,p,n):
    new_list = []
    for i, c in enumerate(s, 1):
        new_list.append(c)
        if i % n == 0:
            new_list.append(p)

    return "".join(new_list)


print(replace("university","-",3))

或者,您也可以这样做:

from itertools import repeat


def take(s, n):
    """"take n characters from s"""
    return s[:n]

def skip(s, n):
    """"skip n characters from s"""
    return s[n:]

def replace(s, p, n):

    # create intervals at which to prefix
    intervals = range(0, len(s), n)

    # create the prefix for all chunks
    prefix = map(skip, repeat(s), intervals)

    # trim prefix for n characters each
    chunks = map(take, prefix, repeat(n))

    return p.join(chunks)
现在:

replace('university', '-', 3)
将为您提供:

'uni-ver-sit-y'

注意:这是示例代码,如果这是为了提高效率,您可能应该使用惰性求值函数(如
islice
),它可以为更大的输入占用更少的内存。

或者您可以这样做:

from itertools import repeat


def take(s, n):
    """"take n characters from s"""
    return s[:n]

def skip(s, n):
    """"skip n characters from s"""
    return s[n:]

def replace(s, p, n):

    # create intervals at which to prefix
    intervals = range(0, len(s), n)

    # create the prefix for all chunks
    prefix = map(skip, repeat(s), intervals)

    # trim prefix for n characters each
    chunks = map(take, prefix, repeat(n))

    return p.join(chunks)
现在:

replace('university', '-', 3)
将为您提供:

'uni-ver-sit-y'

注意:这是示例代码,如果这是为了提高效率,您可能应该使用惰性求值函数(如
islice
),它可以为更大的输入占用更少的内存。

因此,您将字符串中的一些字符替换为
“-”
,但是您想在字符串中插入
'-'
?是的,您能帮我吗@khelwoodSo您正在用
'-'
替换字符串中的一些字符,但您想将
'-'
插入字符串中?是的,确实如此,您能帮我吗@khelwood不能
“{}{}”。format(char,p)
只是
char+p
?@khelwood-是的,我试着在OP的代码中不要改变太多东西。format(char,p)只是
char+p
?@khelwood-是的,我试着在OP的代码中不要改变太多东西