Je veux diviser une chaîne avec deux mots tels que "Word1 Word2" en utilisant diviser et partitionner et imprimer (en utilisant un pour) les mots séparément comme:
Partition:
Word1
Word2
Split:
Word1
Word2
Ceci est mon code:
print("Hello World")
name = raw_input("Type your name: ")
train = 1,2
train1 = 1,2
print("Separation with partition: ")
for i in train1:
print name.partition(" ")
print("Separation with split: ")
for i in train1:
print name.split(" ")
Cela se passe:
Separation with partition:
('Word1', ' ', 'Word2')
('Word1', ' ', 'Word2')
Separation with split:
['Word1', 'Word2']
['Word1', 'Word2']
Une commande comme name.split()
renvoie une liste. Vous pourriez envisager de parcourir cette liste:
for i in name.split(" "):
print i
Parce que la chose que vous avez écrite, à savoir
for i in train:
print name.split(" ")
exécute la commande print name.split(" ")
deux fois (une fois pour la valeur i=1
et une fois de plus pour i=2
). Et deux fois, il affichera l'intégralité du résultat:
['Word1', 'Word2']
['Word1', 'Word2']
La même chose se passe avec partition
- sauf qu'il renvoie également l'élément que vous avez scindé. Donc, dans ce cas, vous voudrez peut-être faire
print name.partition(" ")[0:3:2]
renvoyer les éléments 0
et 2
. Alternativement, vous pouvez faire
train = (0, 2,)
for i in train:
print name.partition(" ")[i]
Imprimer les éléments 0 et 2 en deux passages consécutifs dans la boucle. Notez que ce dernier code est plus inefficace puisqu'il calcule la partition deux fois. Si vous vous en souciez, vous pouvez écrire
train = (0,2,)
part = name.partition(" ")
for i in train:
print part[i]
str.partition
retourne un tuple de trois éléments. Chaîne avant la chaîne de partitionnement, la chaîne de partitionnement elle-même et le reste de la chaîne. Donc, il doit être utilisé comme ça
first, middle, rest = name.partition(" ")
print first, rest
Pour utiliser le str.split
, vous pouvez simplement imprimer les chaînes fractionnées comme ceci
print name.split(" ")
Mais, lorsque vous appelez cela comme ceci, si la chaîne a plus d'un espace, vous obtiendrez plus de deux éléments. Par exemple
name = "Word1 Word2 Word3"
print name.split(" ") # ['Word1', 'Word2', 'Word3']
Si vous voulez diviser une seule fois, vous pouvez spécifier le nombre de fois à diviser comme deuxième paramètre, comme ceci
name = "Word1 Word2 Word3"
print name.split(" ", 1) # ['Word1', 'Word2 Word3']
Toutefois, si vous essayez de vous scinder en fonction des espaces, vous n'avez pas à passer " "
. Vous pouvez simplement faire
name = "Word1 Word2 Word3"
print name.split() # ['Word1', 'Word2', 'Word3']
Si vous voulez limiter le nombre de divisions,
name = "Word1 Word2 Word3"
print name.split(None, 1) # ['Word1', 'Word2 Word3']
Note: Utiliser None
dans split
ou ne spécifier aucun paramètre, c'est ce qui se passe
Citant à partir de split documentation
Si sep n'est pas spécifié ou est None, un algorithme de fractionnement différent est Appliqué: les espaces blancs consécutifs sont considérés comme un seul séparateur, et le résultat ne contiendra aucune chaîne vide au début ou fin si la chaîne a des espaces de début ou de fin. Par conséquent, fractionner une chaîne vide ou une chaîne constituée uniquement d'espaces avec un séparateur Aucun retourne [].
Donc, vous pouvez changer votre programme comme ça
print "Partition:"
first, middle, rest = name.partition(" ")
for current_string in (first, rest):
print current_string
print "Split:"
for current_string in name.split(" "):
print current_string
Ou vous pouvez utiliser str.join
comme ceci
print "Partition:"
first, middle, rest = name.partition(" ")
print "\n".join((first, rest))
print "Split:"
print "\n".join(name.split())
string = "Deepak est une bonne personne et Preeti n'est pas une bonne personne." // 'is' un séparateur est trouvé à la première occurrence print (string.partition ('is'))
Sortie:
('Deepak', 'est', 'une bonne personne et Preeti n'est pas une bonne personne')
Et en split, String = "Deepak est une bonne personne et Preeti n'est pas une bonne personne." // 'is' un séparateur est trouvé à chaque occurrence print (string.partition ('is'))
Sortie:
('Deepak', 'est', 'une' bonne personne et Preeti ',' est ',' pas 'une bonne personne.')