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

Jol*_*att 10 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"
Run Code Online (Sandbox Code Playgroud)

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

for i in B:
    A = A.replace(i, "")
Run Code Online (Sandbox Code Playgroud)

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

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

无论如何,谢谢大家!

jas*_*son 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)
Run Code Online (Sandbox Code Playgroud)

  • 唯一的缺点是,集合只包含唯一的元素。所以,假设我想从 _"Hello!"_ 中减去 _"!"_。使用 _set("Hello!") - set("!")_ 会给出 _"Helo"_。但是使用上面的替代 _a_minus_b_ 有效。:) (2认同)