给定字符串中的一组字母,如何在python中获取字符串中的其余字母

2024-09-30 06:18:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似“LETTER”的字符串,现在我有另一个字符串“LTR”,当这个字符串与前一个字符串进行检查时,剩下的字母是“ETE”,如何从python的主字符串中提取这个字符串。字母的顺序无关紧要,我们应该得到剩下的字母


Tags: 字符串顺序字母letterltrete
3条回答

使用^{}库中的ndiff()

>>> from difflib import *
>>> list(ndiff("LETTER","LTR"))
['  L', '- E', '  T', '- T', '- E', '  R']

#so filter out letters which doesn't have '-'

>>> ''.join(x.strip('-').strip() for x in filter(lambda x:'-' in x,ndiff("LETTER","LTR")))
'ETE'

>>> ''.join(x.strip('-').strip() for x in filter(lambda x:'-' in x,ndiff("stack","tc")))
'sak'

如果字母顺序无关紧要,可以使用Counter()

^{pr2}$

受欢迎的问题:-)我认为这是一个非常可读的:

s=list("LETTER")                                  
p=list("LTR")                                         
while p: s.remove(p.pop())                            

现在

^{pr2}$

打印“ETE”

#!/bin/env python

def str_diff(s, rem):
    for x in rem:
        pos = s.find(x)
        if pos >= 0: s = s[:pos] + s[pos+1:]

    return s

print str_diff("LETTER", "LTR")    # ETE
print str_diff("LETTER", "LTTR")   # EE
print str_diff("LETTER", "LTRxyz") # ETE

这似乎是你想做的。它保留了原始的顺序,适用于“删除集”中同一个字母的倍数,如果“删除集”中包含不在原始字符串中的字符,则不会出现barf。在

相关问题 更多 >

    热门问题