Python:从字符串中获取常见字符

时间:2013-07-16 02:18:57

标签: python string boolean

所以,一个新问题:我正在寻找比较两个字符串并能够作为单独字符串返回的最小(也是最好的)方式:

  • 所有常见字符,
  • 不常见的角色,(所有角色但没有常见的角色)
  • 一个字符串唯一的字符。

...使用Python,(或Perl,如果它更容易 - 但最好是Python)。例如:

A = "123 ABC"
B = "135 AZ"

thingamajigger(A, B) would give all these:

intersect = "13 A" (inclues space)
exclusion = "2BCZ5"
a_minus_b = "2BC"
b_minus_a = "5Z"

a_minus_b非常简单......但是如果有一种奇特的单行方式可以将其拉下来,那么我就是开放的。

for i in B:
    A = A.replace(i, "")

这有点像字符串上的布尔操作。

(并且对于任何能够找到将所有常见/不常见字符从任意数量的字符串作为输入返回的方式的人来说都是一个巨大的奖励。这确实非常方便。)

无论如何,谢谢大家!

3 个答案:

答案 0 :(得分:10)

使用set

s = set("123 ABC")
t = set("135 AZ")
intersect = s & t # or s.intersection(t)
exclusion = s ^ t # or s.symmetric_difference(t)
a_minus_b = s - t # or s.difference(t)
b_minus_a = t - s # or t.difference(s)

答案 1 :(得分:-1)

def find_common_characters(msg1,msg2):
    l=[]
    msg11=msg1.replace(" ", "")
    msg22=msg2.replace(" ", "")
    for letter in msg11:
        if letter in msg22:
            l.append(letter)
    if len(l)!=0:
        return "".join(l)
    else:
        return -1
msg1="I like Python"
msg2="Java is a very popular language"
common_characters=find_common_characters(msg1,msg2)
print(common_characters)   

答案 2 :(得分:-3)

String1="xyzabc"   #String
String2="pqrstuv"  #Another String

String1set=set(String1)  #need to convert it into set.
String2set=set(String2)
String3=String1set^String2set # ^ for uncommon values
String3=String1set&String2set # & for common values
print(String3)

原因,我们使用的原因,设置在这里 - > https://www.python-course.eu/sets_frozensets.php