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