2013-07-16 14 views
8

から共通の文字を取得しますので、newbious質問:のPython:文字列

  • すべて:私は2つの文字列を比較すると、別の文字列として、戻って取得することができるというの最小(と素敵な)方法を探しています
  • 一般的ではない文字(すべての文字が共通の文字はありません)
  • 1つの文字列に固有の文字です。

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

これは文字列のブール演算のようです。

(入力として文字列の任意の数からすべての共通/珍しい文字を返します方法を見つけることができます誰にでもそして大規模なボーナス。確かに非常に便利になります。)

とにかく、おかげでみんな!

答えて

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

@ジョセフ:それは美しいですね。 :-) – jason

+0

唯一の違いは、セットにはユニークな要素のみが含まれていることです。だから、私は "Hello!" _から "_"を差し引きたいと言っています。 _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)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –