【问题标题】:Get common characters from strings从字符串中获取常用字符
【发布时间】:2013-07-14 01:38:39
【问题描述】:

我正在寻找比较两个字符串并能够作为单独字符串返回的方法:

  • 所有常用字符,
  • 不常见字符,(所有字符,但不包括常见字符)
  • 一个字符串唯一的字符。

例子:

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

thingamajigger(A, B)  # would give all these:

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

a_minus_b 非常简单...但如果有一种花哨的单线方法可以实现它,那么我很开放。

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

有点像对字符串的布尔运算。

【问题讨论】:

    标签: python string boolean


    【解决方案1】:

    使用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)
    

    【讨论】:

    • 哇...当然...然后您可以使用 "".joint(set) 将其压缩成一个字符串!谢谢。
    • @Joseph:它美丽的,不是吗? :-)
    • 唯一的区别是,集合只包含独特的元素。所以,假设我想从 "Hello!" 中减去 "!"。使用 set("Hello!") - set("!") 会得到 "Helo"。但是使用上面的替代 a_minus_b 是可行的。 :)
    • @Joseph:我明白了。如果那是您想要的,我会使用"".join([c for c in A if c not in set(B)]);它的效率要高得多(长度的加法与长度的乘法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    相关资源
    最近更新 更多