2015-04-27 1 views
0

Je veux faire quelque chose à l'effet de:Comment utiliser n'importe quel élément d'une liste comme une valeur fractionnée en Python?

x = [" ","cats"] 
def function(a): 
    a.split([any of the elements in x]) 
    return a 

Comment puis-je faire Python accepter un quelconque des éléments en x comme argument (il se divise en espaces et chats)?

Edit: Désolé, j'aurais probablement spécifié: devrait être une liste

(je suis vraiment, vraiment désolé de ne pas être clair.)

entrée

- a = « I love cats tellement " sortie attendue - [" I "," amour "," so "," beaucoup "]

Fondamentalement, je veux qu'il effectue la fonction de split pour" ", puis pour" chats ".

+1

divisée est une méthode de chaîne et non disponible pour les entiers comme dans 'x'. – Olaf

+0

Voulez-vous que ça ressemble à ça? [' ','chats']? Comme dans vous divisez les éléments des chaînes et renvoyez une chaîne collectivement divisée? S'il vous plaît donnez un exemple de ce que vous avez l'intention de faire. – ProfOak

+0

S'il vous plaît modifier votre question pour avoir des exemples de beahvior entrée et sortie attendue. Comme c'est je n'ai aucune idée de ce que vous voulez. –

Répondre

0
s = "I love cats so much" 
x = [" ", "cats"] 

for delim in x: 
    s = s.replace(delim, " ") 

print s.split() 

Vous faites une nouvelle liste, sans aucun des chats.

+0

Je veux la diviser par des espaces et aussi par des «chats». Y a-t-il un moyen de faire les deux? –

+0

Non. Il veut le diviser par l'une des chaînes de 'x'. –

+0

Ce ne sont pas seulement des "chats". C'est n'importe quelle chaîne dans la liste 'x'. –

0

Voici un moyen. Pas la plus lisible des approches, mais fait le travail.

import re 
x = [" ", "cats"] 
pattern = "|".join(x) 

re.split(pattern, "I love cats very much") 
+0

Merci beaucoup! –

0
def split_many(s, *words): 
    return filter(bool, reduce(lambda s, word: 
      s.replace(word, words[0]), words, s).split(words[0])) 

print split_many('I love cats so much', 'cats', ' ')