2013-07-16 16 views
8

Quindi, una domanda newbious: Sto cercando per i più piccoli (e più belle) modo di confrontare due stringhe e di essere in grado di tornare, come stringhe separate:Python: Get caratteri comuni da stringhe

  • Tutto i caratteri comuni,
  • I caratteri non comuni, (tutti i caratteri ma senza quelli comuni)
  • Caratteri che sono univoci per una stringa.

... utilizzando Python, (o Perl, se è più semplice, ma preferibilmente Python). Esempio:

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 è abbastanza semplice ... ma se c'è uno di quei modi di fantasia uno-liner per tirarlo fuori, quindi sono aperto.

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

È un po 'come un'operazione booleana su stringhe.

(e un massiccio bonus a chiunque possa trovare un modo che restituirà tutti i caratteri comuni/non comuni da qualsiasi numero di stringhe come input. Questo sarebbe molto utile in effetti.)

Comunque, grazie a tutti!

risposta

9

Uso 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

Wow ... naturalmente ... e allora si può solo usare "". congiunto (set) per schiacciarlo in una stringa! Grazie. – Jollywatt

+0

@Joseph: È * bello *, non è vero? :-) – jason

+0

L'unico thins è, set contiene solo elementi unici. Quindi, dire che volevo sottrarre _ "!" _ Da _ "Ciao!" _. Usando _set ("Hello!") - set ("!") _ Darebbe _ "Helo" _. Ma usando l'alternativa _a_minus_b_ sopra funziona. :) – 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) 

ragione, perché abbiamo utilizzato, impostare qui ->https://www.python-course.eu/sets_frozensets.php

+1

In che modo questo aggiunge qualcosa di nuovo all'altra risposta? – usr2564301

+0

probabilmente, spiegare con un esempio consueto potrebbe aiutare qualcuno. Più rispondi alle risposte, più impari. –

+0

Grazie per questo snippet di codice, che potrebbe fornire una guida limitata a breve termine. Una spiegazione appropriata [migliorerebbe notevolmente] (// meta.stackexchange.com/q/114762) il suo valore a lungo termine mostrando * perché * questa è una buona soluzione al problema e lo renderebbe più utile ai futuri lettori con altre domande simili. Per favore [modifica] la tua risposta per aggiungere qualche spiegazione, incluse le ipotesi che hai fatto. –

Problemi correlati