Digamos que tengo una cuerda

a = "Apple;Bananas-Mangoes/Strawberries"

Ahora lo que quiero hacer es dividir la cadena en la primera aparición de cualquiera de estos caracteres (; o - o /).

Igual que b = ["Apple","Bananas-Mangoes/Strawberries"]

Pero si se usa un carácter diferente al principio en lugar del; , quiero separarme de eso en su lugar.

a = "Apple/Bananas-Mangoes;Strawberries"

b = ["Apple","Bananas-Mangoes;Strawberries"]

Entonces, ¿alguna forma de lograr esto en Python?

2
Tejasisamazing 13 jul. 2021 a las 05:24

3 respuestas

La mejor respuesta

Puedes usar re.split:

import re
a = "Apple;Bananas-Mangoes/Strawberries"
result = re.split('[;/\-]', a, 1)

Salida:

['Apple', 'Bananas-Mangoes/Strawberries']
2
Ajax1234 13 jul. 2021 a las 02:31

Puede usar any() que devuelve Verdadero si se cumple la condición:

a = "Apple/Bananas-Mangoes;Strawberries"
not_l=['-','/',';']
for i in a:
    if any(i==k for k in not_l):
        c=a.split(i)
        print(c)
        break
0
Sujay 13 jul. 2021 a las 02:30

Podrías hacer lo siguiente

import re

s1='Apple;Bananas-Mangoes/Strawberries'
s2='Apple/Bananas-Mangoes;Strawberries'

p ='(;|\\/|-)'

s=s1
m=re.search(p,s)
print([s[0:m.regs[0][0]],s[m.regs[0][0]+1:-1]])

s=s2
m=re.search(p,s)
print([s[0:m.regs[0][0]],s[m.regs[0][0]+1:-1]])
0
Dariva 13 jul. 2021 a las 02:45