2014-01-24 218 views
0

我有這樣的代碼:Python的字符串替換

ALPHABET1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    key = "TES" 
    ALPHABET2 = key + ALPHABET1 
    count_result = ALPHABET2.count("T") 
    if (count_result > 1): 
    ALPHABET3 = ALPHABET1.replace("T","") 
    ALPHABET2 = key + ALPHABET3   
    print(ALPHABET2) 

我希望能夠把關鍵字的字母串的開始,而不在關鍵字重複的字母來創建一個新的字符串。儘管如此,我遇到了一些問題。我需要關鍵字來處理所有字母,因爲它將在我的程序中作爲用戶輸入。有什麼建議麼?

+0

字符串是值的「元組」。你可以製作一組字母,而不是轉換回字符串(簡單的實現就是這個順序改變了)。但我認爲一個簡單的解析器循環用於eache字母,在列表理解中 - 它可能是適合您的解決方案。如果聽起來很奇怪,告訴我,我在回答中擴展它 – cox

回答

1

兩件事情:

  1. 你並不需要自己做出的字母,import string和使用string.ascii_uppercase;和
  2. 您可以使用for循環來處理密鑰中的字符。

爲了說明後者:

for c in key: 
    alphabet = alphabet.replace(c, "") 

更重要的是,一個list是可變的,所以你可以做:

alpha = [c for c in string.ascii_uppercase if c not in key] 
alpha.extend(set(key)) 
+0

好吧,我認爲這樣做:D謝謝 – ubuntuaskdanidani

+0

我概述的兩種方法都不需要知道密鑰的長度。一個'for'循環可以通過很多字符來工作。 – jonrsharpe

+0

是的..我發現剛剛發佈後:)) – ubuntuaskdanidani

0

其方便,乾淨,用正則表達式來做到這一點

import re 

ALPHABET1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
key   = "TES" 
newalphabet = key.upper() + re.sub(r'%s'%'|'.join(key.upper()), '', ALPHABET1) 

或者像@jonrshar這樣的列表理解pe建議