palabra - separar python
Dividir cadena en dos partes solamente (9)
Esta pregunta ya tiene una respuesta aquí:
Tengo una cuerda
s = ''abcd qwrre qwedsasd zxcwsacds''
Quiero dividir cualquier cadena en solo dos partes en la primera aparición de un espacio en blanco. es decir a=''abcd''
y b=''qwrre qwedsasd zxcwsacds''
Si uso a, b=split('' '')
me da un error porque hay demasiados valores para desempaquetar.
1.Usted puede dividir la cadena de esta manera.
a = temp.substring(0, s.indexOf('' ''));
b = temp.substring(s.indexOf('' '') + 1);
2.o puedes hacer:
a = s[0: s.find('' '')]
b = s[s.find('' '') + 1: ]
3.
a,b = s.split('' '', 1)
print(a)
print(b)
De los documentos de Python.
str.split (sep = Ninguna, maxsplit = -1)
Devuelve una lista de las palabras en la cadena, usando sep como la cadena delimitadora. Si se proporciona maxsplit, como máximo se realizan las divisiones de maxsplit (por lo tanto, la lista tendrá como máximo maxsplit + 1 elementos). Si no se especifica maxsplit o -1, entonces no hay límite en el número de divisiones (se realizan todas las divisiones posibles).
''1 2 3''.split(maxsplit=1)
# [''1'', ''2 3'']
Entonces, hay un segundo parámetro que puede pasar, como muchos han señalado:
>>> a, b = "foo bar".split('' '', 1)
pero nadie está señalando esto:
>>> a, b = "foobar".split('' '', 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
No querrás usar esto porque no es seguro a menos que tengas la garantía de tener una cadena que tenga solo un espacio. Es mejor dividirlo y luego verificar cuántas divisiones tienes y luego descomprimirlas:
>>> parts = "foo bar".split('' '', 1)
>>> if len(parts) == 2:
>>> a, b = parts
Le falta un parámetro más en su división, el número de ocurrencias, intente esto;
s=''abcd qwrre qwedsasd zxcwsacds''
>>> a, b = s.split('' '', 1)
>>> print(a, b)
Podría usar a,b = split('' '', 1)
.
El segundo argumento 1
es el número máximo de divisiones que se realizarían.
s = ''abcd efgh hijk''
a,b = s.split('' '', 1)
print(a) #abcd
print(b) #efgh hijk
Para obtener más información sobre la función de división de cadenas, consulte str.split
en el manual .
Prueba esto:
s = ''abcd qwrre qwedsasd zxcwsacds''
s1 = s.split()[0]
s2 = '' ''.join(s.split()[1:])
print(s1)
print(s2)
Salida:
abcd
qwrre qwedsasd zxcwsacds
O:
new_s = ''''.join(['' s '' if i.isspace() else i for i in s])
a,b = new_s.replace('' s'','''',1).split('' s '')
print(a)
print(b)
Salida:
abcd
qwrre qwedsasd zxcwsacds
O incluso mejor dividido también para pestañas y nuevas líneas:
a,b = s.split(None,1)
print(a)
print(b)
Salida:
abcd
qwrre qwedsasd zxcwsacds
Puede usar una partition
método de cadena estándar que busca un separador determinado y devuelve una tupla de 3 que consta de la parte de cadena anterior, el propio separador y la parte posterior.
>>> s = ''abcd qwrre qwedsasd zxcwsacds''
>>> s.partition('' '')
(''abcd'', '' '', ''qwrre qwedsasd zxcwsacds'')
Puedes resolver este problema usando la "expresión en estrella" de python.
s=''abcd qwrre qwedsasd zxcwsacds''
a = s.split()
first, *second = a
second = " ".join(second)
"first" toma el primer elemento de la lista y "* second" toma los elementos restantes.
>>> first
''abcd''
>>> second
''qwrre'', ''qwedsasd'', ''zxcwsacds''
#!python2
s=''abcd qwrre qwedsasd zxcwsacds''
s1 = s[0: s.find('' '')]
s2 = s[s.find('' '') + 1: ]
print s1
print s2
''''''
abcd
qwrre qwedsasd zxcwsacds
''''''