2015-03-08 32 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