s1 = 'GSHMGLYELSASNFELHVAQGDHFIKFFAPWCGHCKALAPTWEQLALGLEHSETVKIGKVDbTQHYELbSGNQVRGYPTLLWFRDGKKVDQYKGKRDLESLREYVESQLQR'
这是一个字符串我想将小写字母替换为某个大写字母,比如说' C'。我正在使用的命令是:
string.replace(s1, s1.lower(), 'C'),
问题:结果字符串仍然与旧字符串相同,b是' b'而不是' C'
答案 0 :(得分:2)
目前,您正在尝试使用'C'
替换整个字符串的小写副本。你似乎也没有将string.replace
的结果分配给任何东西,这是行不通的。 replace
不会在适当的位置进行修改,它会返回应用了替换项的字符串的新副本。
您需要遍历字符串并替换任何小写字母。
s1 = 'GSHMGLYELSASNFELHVAQGDHFIKFFAPWCGHCKALAPTWEQLALGLEHSETVKIGKVDbTQHYELbSGNQVRGYPTLLWFRDGKKVDQYKGKRDLESLREYVESQLQR'
replaced_string = ''.join(x if x.isupper() else 'C' for x in s1)
答案 1 :(得分:1)
对于简单的“替换”方法,您的条件太复杂了。请改用regexp:
import re
s1 = "GaHMxLYELmASNFElHVAQG"
s2 = re.sub(r"[a-z]", "C", s1)
print s2
将打印“GCHMCLYELCASNFECHVAQG”
[a-z]表示“从a到z的任何字母” - 如果需要,为您的语言添加额外的低位字母。例如,对于俄语,这种模式将是:[a-zа-я]
答案 2 :(得分:1)
string.replace(s1, s1.lower(), 'C')
将替换为' C'只有整个字符串
gshmglyelsasnfelhvaqgdhfikffapwcghckalaptweqlalglehsetvkigkvdbtqhyelbsgnqvrgyptllwfrdgkkvdqykgkrdleslreyvesqlqr
如果你想用字符串中的给定属性替换所有字符,我建议使用regular expressions,在你的情况下它将是:
s2 = re.sub("[a-z]", "C", s1)
答案 3 :(得分:1)
s1.lower()
等于
>>> s1.lower()
'gshmglyelsasnfelhvaqgdhfikffapwcghckalaptweqlalglehsetvkigkvdbtqhyelbsgnqvrgyptllwfrdgkkvdqykgkrdleslreyvesqlqr'
所以string.replace(s1, s1.lower(), 'C')
在字符串c1中搜索整个小写字符串的任何出现,如果找到任何字符串,则用'C'
替换每个字符串。
请注意,string.replace
也是字符串本身的一种方法,因为Python 2.0左右,s1.replace(s1.lower(), 'C')
会做同样的事情。
您可以使用翻译表:
>>> from string import maketrans, lowercase
>>> trans_table = maketrans(lowercase, 'C' * len(lowercase))
>>> s1.translate(trans_table)
Maketrans获取两个长度相等的字符串,而translate()会将第一个字符的每个出现转换为第二个字符的等效字符。
lowercase
是'abcdefghijklmnopqrstuvwxyz'
,' C' * len(小写)只是一个26 Cs的字符串。