如何在Python中正确生成变量字符串模式

如何在Python中正确生成变量字符串模式,python,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) # ---------------- 尽管如此,我想知道这是否是实现这一点的最具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) # ----------------

尽管如此,我想知道这是否是实现这一点的最具python风格的方式。非常感谢。

最具python风格的方式是:

concat_str = '-' * len(title)


另外,您不需要指定
0
作为范围的开始:
range(len(title))
更像Pythonic。

您可以使用regex将所有字符替换为破折号:

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

你可以-但是为什么你想让一个正则表达式引擎参与到一件如此简单的事情中,而这件事可以通过Antti的答案来实现,即更快、更少的开销?@JonClements编程的美妙之处在于有众多的解决方案,我只想提一下另一个。否则,我会简单地重复Antii。我想我们可以加入
concat_str='''.join('-'代表ch in title)
p@MalikBrahimi:Python编程的美妙之处在于,应该有一种显而易见的方法来实现它#请注意,循环中字符串的
+=
O(n²)
,因此应该避免使用。尽管对于这一点存在一些无关紧要的答案,但典型的转换是创建一个列表并在循环中调用
.append
。然后做一个
”。然后加入。