2015-10-27 7 views
5

Prendere la seguente stringa:Split una lista e ricongiungersi utilizzando lo stesso separatore

"Hello,world,how-are you?h" 

Se dovessi dividere utilizzando:

import re 
x = re.split("[^a-zA-Z]", string) 

vorrei avere:

["Hello","world","how","are","you","h"] 

Quindi, per ogni elemento della nuova lista avrei eseguito una funzione, ad esempio:

Come potrei ricongiungerlo utilizzando i separatori originali? Nell'esempio di cui sopra, il processo di ricongiungimento comporterebbe con:

"HELLO,WORLD,HOW-ARE-YOU?H" 
+0

non credo che si può usare 're.split()' per questo, dal momento che nessun più lungo è il delimitatore che è stato usato per dividere la stringa, dopo averla divisa, che cosa stai cercando di fare esattamente? È che per ogni parola, vuoi eseguire qualche funzione? –

+0

@AnandSKumar Sì, esattamente –

+0

Perché "sono" e "tu" separati da uno spazio nell'input e un trattino nell'output finale? È un errore di battitura o frainteso? – timothymh

risposta

4

Uso re.sub invece:

import re 
def change(m): 
    return str.upper(m.group(0)) 
x = re.sub("[a-zA-Z]", change, string) 
+0

il parametro che la funzione riceve sarebbe un oggetto match, dovresti usare '.group()' per ottenere la stringa da esso, all'interno della funzione (o usare lambda per inviare il risultato di '.group()' a la funzione) . –

+0

@AnandSKumar Sì. Appena risolto Grazie – hjpotter92

+0

Come funzionerebbe se dovessi usare una funzione anonima in cui 'change' è? –

Problemi correlati