I have been using .translate() but I would like to remove a character from a string if it is not one of the characters in the list. I don't think I'm using "not" correctly, but that was mainly to show what I mean (sorry, bad way, I know). The string is
MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAXPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEAXX
and I am trying to remove the Xs.
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))
You can use a list comprehension to get missed characters :
>>> contentjoined.translate(None,''.join([i for i in contentjoined if i not in aminoacids]))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
Or you can use set.difference
:
contentjoined.translate(None,''.join(set(contentjoined).difference(aminoacids)))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
But you can do this job with a simple list comprehension and join
:
>>> ''.join([i for i in contentjoined if i in aminoacids])
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With