如果字符不在列表中,则从字符串中删除该字符...?

mkp*_*ppu 4 python string

我一直在使用 .translate() 但我想从字符串中删除一个字符,如果它不是列表中的字符之一。我认为我没有正确使用“不”,但这主要是为了表明我的意思(对不起,不好的方式,我知道)。该字符串是

MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAXPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEAXX 
Run Code Online (Sandbox Code Playgroud)

我正在尝试删除 X。

aminoacids = ['A','C','D','E','F','G','H','I','K','L','M','N','P','Q','R','S','T','V','W','Y']
contentjoined.translate(None, not(aminoacids))
Run Code Online (Sandbox Code Playgroud)

Kas*_*mvd 5

您可以使用列表理解来获取丢失的字符:

>>> contentjoined.translate(None,''.join([i for i in contentjoined if i not in aminoacids]))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>> 
Run Code Online (Sandbox Code Playgroud)

或者你可以使用set.difference

contentjoined.translate(None,''.join(set(contentjoined).difference(aminoacids)))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>> 
Run Code Online (Sandbox Code Playgroud)

但是您可以通过简单的列表理解来完成这项工作join

>>> ''.join([i for i in contentjoined if i in aminoacids])
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>> 
Run Code Online (Sandbox Code Playgroud)