2014-01-24 184 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建议