我一直在使用.translate()但是如果它不是列表中的某个字符,我想从字符串中删除一个字符。我不认为我正在使用“不”,但这主要是为了表明我的意思(抱歉,糟糕的方式,我知道)。字符串是
MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAXPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEAXX
我想删除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))
答案 0 :(得分:3)
您可以使用列表理解来获取错过的字符:
>>> contentjoined.translate(None,''.join([i for i in contentjoined if i not in aminoacids]))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
或者您可以使用set.difference
:
contentjoined.translate(None,''.join(set(contentjoined).difference(aminoacids)))
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
但是你可以通过简单的列表理解和join
来完成这项工作:
>>> ''.join([i for i in contentjoined if i in aminoacids])
'MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA'
>>>
答案 1 :(得分:0)
您使用translate()
代替strip()
是否有特定原因?
如果您知道某个特定字符是您希望删除的,strip()
是一种更简单的方式:
long_string = "MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAXPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEAXX"
print long_string.strip('X')
输出:MDVFMKGLSKAKEGVVAAAEKTKQGVAEAAGKTKEGVLYVGSKTKEGVVHGVATVAEKTKEQVTNVGGAVVTGVTAVAQKTVEGAGSIAAATGFVKKDQLGKNEEGAXPQEGILEDMPVDPDNEAYEMPSEEGYQDYEPEA
答案 2 :(得分:-1)
不是一个奇特的解决方案,但如果列表上有新字符,您可以尝试将字符添加到
中newString = ""
for i in range(len(oldString)):
if oldString[i] in aminoacids:
newString += oldString[i]