Estoy tratando de dividir una cadena tan pronto como veo un símbolo que está en mi lista de símbolos (es una lista bastante grande). ahora algo que quiero saber, como nuevo usuario de python, ¿hay algún método que no sea el método de división, que puedo decirle que se divida tan pronto como vea algún miembro en la lista de símbolos? Aquí hay un ejemplo:

symbolList=[',' , '&' , '8' , '9' , '.']
words = ['ha,di' , 'dea&r']
for word in words :
    for i in word :
         if i in symbolList:
             #a method which splits the string by the symbol

Quiero tener y salir como:

newWords=['ha' , 'di' , 'dea' ,'r']
2
Singu 28 ago. 2014 a las 12:36

2 respuestas

La mejor respuesta

Intenta usar rsplit

words = ['ha,di' , 'dea&r','1.2']
for i in words:
    print re.split(',|&|8|9|\.', i)

#output

['ha', 'di']
['dea', 'r']
['1', '2']

Para una lista muy grande

import re
symbolList=[',' , '&' , '8' , '9' , '.']
regex = '|'.join(map(re.escape, symbolList))

words = ['ha,di' , 'dea&r','1.2']
for i in words:
    print re.split(regex, i)
1
sundar nataraj 28 ago. 2014 a las 09:05

Puede convertir la lista de palabras en una cadena, luego reemplazar todos los delimitadores con un delimitador común que diga , y ahora ejecutar una división en ,

symbolList=[',' , '&' , '8' , '9' , '.']             
words = ['ha,di' , 'dea&r']                          
delimiter = symbolList[0]        #Any symbol in symbolList                    
words_str = delimiter.join(words) #converting words to a string separated by delimiter
print words_str
for symbol in symbolList:   #replace other symbols with delimiters
    words_str = words_str.replace(symbol,delimiter)  
print words_str
print words_str.split(delimiter)

salida

ha,di,dea&r
ha,di,dea,r
['ha', 'di', 'dea', 'r']
0
Ashoka Lella 28 ago. 2014 a las 08:54