Cet article résume les précautions et les solutions lors du traitement des chaînes de caractères qui incluent une barre oblique inverse "", comme lors de la définition d'un chemin d'accès dans un environnement Windows. (Sur Mac, le délimiteur de chemin est une barre oblique "/", vous n'avez donc pas à vous en soucier lors de la définition du chemin.)
Par exemple, lorsque vous spécifiez le chemin du dossier dans l'environnement Windows comme indiqué ci-dessous, il peut être traité différemment de la chaîne de caractères attendue.
python
dir_name = 'C:\testDir'
print(dir_name)
#Chaîne de caractères attendue> C:\testDir
#La chaîne de caractères réellement affichée> C: estDir
La raison pour laquelle cela se produit est que le délimiteur de chemin Windows ** "" barre oblique inverse est ** utilisé en Python pour un processus appelé "séquences d'échappement".
Quel type de traitement est "séquence d'échappement"? Par exemple, lorsque vous souhaitez couper une ligne dans une chaîne de caractères
python
txt = 'Ici pause → ← pause'
# print(txt)Je veux afficher comme suit
#Saut de ligne ici →
#← saut de ligne
Même si vous appuyez sur Entrée simplement parce que vous souhaitez insérer un saut de ligne, un saut de ligne se produira sur le code et une erreur se produira.
python
txt = 'Saut de ligne ici →
← saut de ligne'
# SyntaxError: EOL while scanning string literal
Par conséquent, la méthode pour représenter ** les caractères spéciaux tels que "saut de ligne" est la "séquence d'échappement" **. Le caractère qui signifie un saut de ligne est représenté par "\ n", qui est une combinaison de barres obliques inverses "" \ "" et "n" ".
python
txt = 'Saut de ligne ici →\n ← saut de ligne'
print(txt)
#↓ Chaîne de caractères affichée
#Saut de ligne ici →
#← saut de ligne
Dans l'exemple de définition du premier chemin, la partie \ t
de dir_name = 'C: \ testDir'
est traitée comme le caractère" TAB
".
Il a été reconnu comme «C: [TAB] estDir» par Python, et c'était une chaîne de caractères anormalement vide.
Par conséquent, il existe un moyen de traiter "" comme une chaîne de caractères "" barre oblique inverse telle quelle, au lieu de "" pour la séquence d'échappement.
Au début de la chaîne, ajoutez l'acronyme «r» pour «raw» qui signifie «tel quel». On l'appelle une chaîne brute et elle sera traitée telle quelle sans séquence d'échappement.
python
#Si r est ajouté, il sera traité tel quel et ne sera pas échappé.
r'C:\testDir'
#Cependant, à la fin, "\Ne peut pas être pris en charge s'il contient ""
r'C:\testDir\'
# SyntaxError: EOL while scanning string literal
Puisque "" est également un caractère spécial, il peut être exprimé par une séquence d'échappement comme "ceci est une barre oblique inverse".
Si vous écrivez deux barres obliques inverses "\\
", elles seront traitées comme des barres obliques inverses.
python
#Deux barres obliques dans le dos "\\Écrivez pour échapper à la barre oblique inverse elle-même
'C:\\testDir'
Je pense que cette méthode est la meilleure pour le chemin. Puisque le caractère de délimitation du chemin de Linux et Mac est une barre oblique "/", vous pouvez éviter les problèmes lorsque vous changez d'environnement si vous êtes conscient de l'unifier avec "/".
Parce que Windows peut également prendre en charge avec la barre oblique "/" Réécrivez la barre oblique inverse «\» par la barre oblique «/» pour y remédier.
python
# 「\"Barre oblique inverse"/Réécrire en barre oblique
'C:/testDir'
Par précaution lors de la réécriture de la barre oblique inverse en une barre oblique Lorsque vous utilisez la fonction pour obtenir le chemin, le délimiteur du chemin est une barre oblique inverse "".
Ce qui suit s'exécute sur "C: \ testDir".
python
import os
#Obtenez le répertoire actuel(Dossier de travail)
current_dir = os.getcwd()
print(current_dir)
# C:\testDir 「\Obtenez avec une barre oblique inverse
Si vous utilisez ce chemin acquis et que vous définissez vous-même les chemins suivants, vous devez faire attention à ne pas mélanger "/" et "".
python
import os
#Obtenez le répertoire actuel
current_dir = os.getcwd()
#Définir un dossier pour les images "/Écrivez le chemin de continuation avec
image_dir = f'{current_dir}/image'
print(image_dir)
# C:\testDir/image 「\」「/"Mixte
La fonction python fonctionne même si elle est mixte, mais lors du passage du chemin vers un autre système ou de la manipulation du chemin sous forme de chaîne, une erreur se produit. Exemple) Lors de la configuration du dossier de téléchargement de Chrome dans Selenium
Par conséquent, comme solution de contournement, remplacez "" par "/" lors de l'obtention du chemin d'accès, puis récupérez-le.
python
import os
#Lors de l'obtention du répertoire actuel, définissez le délimiteur sur "/Remplacé par
current_dir = os.getcwd().replace(os.sep,'/')
print(current_dir)
# C:/testDir
Merci pour votre visite. Il existe différentes manières de gérer la barre oblique inverse "", mais définissons des règles sur site ou par nous-mêmes et unissons-les pour que nous puissions développer sans problème.
Utiliser la séquence d'échappement Chaîne brute qui ignore (désactive) les séquences d'échappement en Python Get Separator