如何在Python中“合并”两个字符串?
在Python中,有什么聪明的方法可以把两个字符串混合在一起呢?
我需要一种方法,可以把一个字符串插入到另一个字符串中,并且可以指定插入的间隔(默认是1)。
>>> aa = 'abcdefghijkl'
>>> bb = mix(aa)
>>> bb
'a b c d e f g h i j k l '
>>> cc = mix(bb,'\n',8)
>>> print cc
a b c d
e f g h
i j k l
有没有一种优雅的写法来实现这个“混合”功能?这个功能需要一个必填的参数(要处理的字符串),还有两个可选参数:一个是从第二个位置开始插入的分隔符(可以是多个字符,默认是一个空格),另一个是每个原始字符串片段的长度,用来决定在哪里插入分隔符(默认是1,也就是说在每个原始字符后面都会插入第二个参数的字符串)。
3 个回答
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序做一些特定的事情,比如在特定的条件下执行某段代码。这个过程就像给程序设定了一些规则,只有当这些规则被满足时,程序才会按照我们的要求去运行。
例如,如果我们想让程序在用户输入的数字大于10时,显示一条消息,我们就需要用到“条件语句”。这就像在说:“如果这个条件成立,就做这个事情。”
通过使用条件语句,我们可以让程序变得更加灵活,能够根据不同的输入做出不同的反应。这就像是给程序加上了一双“眼睛”,让它能够观察到周围的变化,并做出相应的反应。
希望这个解释能帮助你更好地理解这个概念!
def mix(seq,sep=' ',dist=1):
return sep.join(seq[i*dist:i*dist+dist]
for i in range(len(seq)/dist+1))
def take_n(seq,n):
for i in range(len(seq)/n+1):
yield seq[i*n:i*n+n]
def mixit(mystring, sep=' ', dist=1):
return sep.join(list(take_n(mystring,dist)))
aa = 'abcdefghijkl'
bb = mix(aa)
print bb
cc = mix(bb,'\n', dist=8)
print cc
print mixit(aa)
print mixit(mixit(aa),'\n',8)
在 itertools 这个库里,有一个叫做'grouper'的例子,下面是它的代码:
def grouper(n, iterable, fillvalue=None):
"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
接下来,你想要的函数,我们叫它 mix
,是这样的:
def mix(s, c=' ', n=1):
return c.join(''.join(seq) for seq in grouper(n, s, '')) + c
我更喜欢这个方法,而不是gnibbler的答案,因为这个方法更容易理解(和编写),而且它是基于一个已经存在的 grouper
函数,这个函数就是用来处理类似情况的。
在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有些地方不对,或者是我们没有正确理解某些概念。解决这些问题的第一步就是要仔细检查代码,看看有没有拼写错误、漏掉的符号或者不匹配的括号。
另外,了解错误信息也很重要。错误信息通常会告诉我们出错的地方和原因。即使一开始看起来很复杂,但慢慢分析,通常能找到解决办法。
如果自己解决不了,可以去一些编程社区,比如StackOverflow,向其他人请教。在提问时,记得把自己的代码和错误信息一起发出来,这样别人才能更好地帮助你。
总之,编程就像解谜一样,遇到问题时不要急,慢慢分析,寻找解决方案。
def mix(s, c=' ', n=1):
return ''.join(s[i:i+n]+c for i in range(0,len(s),n))