2015-03-08 43 views
3

我已成功地编码在Python小片段,其产生一个字符条,其长度可变的字符串模式等于另一个字符串的像这样的长度:如何适当地产生在Python

title = "This is a string" 
concat_str = "" 
for i in range (0,len(title)): #len(title) == 16 
    concat_str += '-' 
# resulting string 
print(concat_str) # ---------------- 

尽管如此,祝要知道这是否是实现这一目标的最pythonic途径。非常感谢。

+0

注意,'+ ='在循环字符串是'O(N²)',因此应尽量避免。虽然对此存在微不足道的答案,但典型的转换是在循环中创建一个列表并调用'.append'。然后做一个'“”.join'。 – Veedrac 2015-03-09 10:05:47

回答

8

最Python的方式是:

concat_str = '-' * len(title) 

附:您无需指定0作为范围的开始:range(len(title))更为Pythonic。

+1

先生,非常感谢。这当然完成了这个诀窍。 – 2015-03-08 19:36:48

1

您可以使用正则表达式用破折号替换所有字符:

concat_str = re.sub('.', '-', title) 
+0

你可以 - 但为什么你想要一个正则表达式引擎参与一些如此简单的事情,Antti的答案可以实现,速度更快,开销更少? – 2015-03-08 18:13:14

+0

@JonClements编程的美丽是众多的解决方案,我只是想提到另一个。否则,我会简单地重复安迪。 – 2015-03-08 18:14:27

+0

猜测我们可以在'concat_str =''.join(' - 'for ch in title)'那么:p – 2015-03-08 18:16:43