En découvrant Python, je suis tombé sur ce code, qui prend un fichier texte, divise chaque ligne en un tableau et l’insère dans un dictionnaire personnalisé, où le tableau [0] est la clé et le tableau [1] la valeur:
my_dict = {} infile = open("file.txt") for line in infile: #line = line.ssortingp() #parts = [p.ssortingp() for p in line.split("\t")] parts = [p for p in line.split("\t")] my_dict[parts[0]] = parts[1] print line for key in my_dict: print "key: " + key + "\t" + "value " + my_dict[key]
J’ai couru le programme avec les lignes commentées et j’ai eu le même résultat. (bien sûr, remplacer la deuxième ligne commentée par la ligne en dessous). Il me semble que faire un ssortingp () est facultatif. Est-il préférable de le laisser?
Si vous pouvez commenter le code et que votre programme fonctionne toujours, alors oui, ce code était facultatif.
.ssortingp()
sans arguments (ou None
comme premier argument) supprime tous les espaces au début et à la fin, y compris les espaces, les tabulations, les nouvelles lignes et les retours chariot. Le laisser en place ne fait aucun mal, et permet à votre programme de traiter des espaces supplémentaires inattendus insérés dans le fichier.
Par exemple, en utilisant .ssortingp()
, les deux lignes suivantes d’un fichier aboutiraient au même résultat final:
foo\tbar \n foo\tbar\n
Je dirais de le laisser dedans
Dans ce cas, vous pourriez avoir des différences. Considérons une ligne comme:
"foo\tbar "
Dans ce cas, si vous ssortingp
, vous obtiendrez {"foo":"bar"}
comme entrée du dictionnaire. Si vous ne décollez pas, vous obtiendrez {"foo":"bar "}
(notez l’espace supplémentaire à la fin)
Notez que si vous utilisez line.split()
au lieu de line.split('\t')
, vous line.split('\t')
sur chaque caractère d’ line.split('\t')
et le “ssortingping” se fera automatiquement lors du fractionnement. En d’autres termes:
line.ssortingp().split()
est toujours identique à:
line.split()
mais:
line.ssortingp().split(delimiter)
N’est pas nécessairement équivalent à:
line.split(delimiter)
ssortingp
ne fait que supprimer le blanc de votre chaîne. Si vous souhaitez supprimer le blanc supplémentaire de l’avant et de l’arrière de votre chaîne, vous pouvez utiliser la bande.
L’exemple de chaîne qui peut illustrer cela est le suivant:
In [2]: x = "something \t like \t this" In [4]: x.split('\t') Out[4]: ['something ', ' like ', ' this']
Voir, même après la séparation avec \t
il y a des espaces supplémentaires dans les premier et deuxième éléments qui peuvent être supprimés en utilisant ssortingp dans votre code.
ssortingp
supprime les espaces au début et à la fin de la chaîne. Si vous voulez les espaces, n’appelez pas ssortingp.
Non, il est préférable de les laisser de côté.
Sans ssortingp (), vous pouvez avoir des clés et des valeurs vides:
applesround, fruity things oranges round, fruity things bananas
Sans ssortingp (), les bananes sont présentes dans le dictionnaire mais avec une chaîne vide comme valeur. Avec ssortingp (), ce code lancera une exception car il supprime l’onglet de la ligne banane.