J'ai une ficelle
s = 'abcd qwrre qwedsasd zxcwsacds'
Je veux diviser une chaîne en seulement deux parties à la première occurrence d'un espace. i.e. a='abcd'
Et b='qwrre qwedsasd zxcwsacds'
Si j'utilise a, b=split(' ')
, cela me donne une erreur car il y a trop de valeurs à décompresser.
Vous pouvez utiliser a,b = split(' ', 1)
.
Le deuxième argument 1
est le nombre maximal de scissions effectuées.
s = 'abcd efgh hijk'
a,b = s.split(' ', 1)
print(a) #abcd
print(b) #efgh hijk
Pour plus d'informations sur la fonction de division de chaîne, voir str.split
dans le manuel .
De la documentation Python
str.split (sep = None, maxsplit = -1)
Renvoie une liste des mots de la chaîne, en utilisant sep comme chaîne de délimitation. Si maxsplit est donné, au maximum les scissions de maxsplit sont effectuées (ainsi, la liste aura au plus maxsplit + 1 éléments). Si maxsplit n'est pas spécifié ou -1, le nombre de divisions n'est pas limité (toutes les divisions possibles sont effectuées).
'1 2 3'.split(maxsplit=1)
# ['1', '2 3']
Vous pouvez utiliser une méthode de chaîne standard partition
qui recherche un séparateur donné et retourne un 3-Tuple composé d'une partie chaîne avant celle-ci, du séparateur lui-même et de la partie suivante.
>>> s = 'abcd qwrre qwedsasd zxcwsacds'
>>> s.partition(' ')
('abcd', ' ', 'qwrre qwedsasd zxcwsacds')
Il vous manque un paramètre supplémentaire dans votre partage, le nombre d'occurrences, essayez ceci;
s='abcd qwrre qwedsasd zxcwsacds'
>>> a, b = s.split(' ', 1)
>>> print(a, b)
Vous pouvez résoudre ce problème en utilisant python "expression en étoile".
s='abcd qwrre qwedsasd zxcwsacds'
a = s.split()
first, *second = a
second = " ".join(second)
"first" prend le premier élément de la liste et "* second" prend les éléments restants.
>>> first
'abcd'
>>> second
'qwrre', 'qwedsasd', 'zxcwsacds'
Essaye ça:
s = 'abcd qwrre qwedsasd zxcwsacds'
s1 = s.split()[0]
s2 = ' '.join(s.split()[1:])
print(s1)
print(s2)
Sortie:
abcd
qwrre qwedsasd zxcwsacds
Ou:
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)
Sortie:
abcd
qwrre qwedsasd zxcwsacds
Ou encore mieux diviser également pour les onglets et les nouvelles lignes:
a,b = s.split(None,1)
print(a)
print(b)
Sortie:
abcd
qwrre qwedsasd zxcwsacds
1.Vous pouvez diviser la chaîne comme ceci.
a = temp.substring(0, s.indexOf(' '));
b = temp.substring(s.indexOf(' ') + 1);
2. ou vous pouvez faire:
a = s[0: s.find(' ')]
b = s[s.find(' ') + 1: ]
3.
a,b = s.split(' ', 1)
print(a)
print(b)
Donc, il y a un deuxième paramètre que vous pouvez passer comme beaucoup l'ont souligné:
>>> a, b = "foo bar".split(' ', 1)
mais personne ne le fait remarquer:
>>> a, b = "foobar".split(' ', 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
Vous ne voulez pas utiliser ceci parce que c'est dangereux, sauf si vous avez la garantie d'avoir une chaîne contenant un seul espace. Il est préférable de le scinder, puis de vérifier combien de scissions vous avez et de les décompresser:
>>> parts = "foo bar".split(' ', 1)
>>> if len(parts) == 2:
>>> a, b = parts
#!python2
s='abcd qwrre qwedsasd zxcwsacds'
s1 = s[0: s.find(' ')]
s2 = s[s.find(' ') + 1: ]
print s1
print s2
'''
abcd
qwrre qwedsasd zxcwsacds
'''