2013-07-16 6 views
8

에서 공통의 문자를 취득하며,이 newbious 질문 :파이썬 : 문자열

  • 모든 : 나는 두 문자열을 비교하고 별도의 문자열로 다시 얻을 수있는 가장 작은 (그리고 좋은) 방법을 찾고 있어요
  • 희귀 한 문자 (일반적인 문자는 제외한 모든 문자)
  • 한 문자열에 고유 한 문자입니다.

... 파이썬 (또는 Perl을 사용하는 것이 더 쉽지만 선호한다면 파이썬)을 사용하십시오. 예 :

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, "") 

문자열에 대해 부울 연산과 비슷합니다.

(입력으로 문자열의 수에 상관없이 모든 일반/드문 문자를 반환하는 방법을 찾을 수있는 사람에 엄청난 보너스. 그것은 참으로 아주 편리 할 것입니다.)

어쨌든, 모두 감사합니다!

답변

9

사용 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) 
+0

와우 ... 물론 ... 그리고 당신이 "단지를 사용할 수 있습니다." 그것을 끈으로 채우는 관절 (세트)! 감사. – Jollywatt

+0

@Joseph : * 아름답 지 않습니까? :-) – jason

+0

유일한 요소는 집합에 고유 한 요소 만 포함한다는 것입니다. 그래서, "안녕하세요!"_에서 "!"_을 뺍니다. _set ("Hello!") - set ("!") _을 사용하면 _ "Helo"_가됩니다. 하지만 위의 대안 _a_minus_b_을 사용하면 효과가 있습니다. :) – Jollywatt

-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

+1

이것은 정확히 다른 대답에 새로운 것을 추가합니까? – usr2564301

+0

아마도 관습적인 예를 들어 설명하면 누군가를 도울 것입니다. 답변을 많이 듣게되면 더 많이 배울 수 있습니다. –

+0

몇 가지 제한된 단기 도움말을 제공 할 수있는이 코드 조각을 가져 주셔서 감사합니다. 적절한 설명을 통해 (* meta.stackexchange.com/q/114762) 왜 * 이것이 문제의 좋은 해결책인지를 보여줌으로써 장기적인 가치를 향상시킬 수있을 것이며, 미래의 독자들에게 더 유용 할 것입니다. 다른 유사한 질문. 귀하의 가정을 포함하여 몇 가지 설명을 추가하려면 답을 편집하십시오. –