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的代码中不要改变太多东西