2017-03-16 1 views
3

J'ai une liste de chaînes contenant des espaces. Je veux changer chaque chaîne de sorte qu'il y ait une barre oblique inverse avant les espaces afin qu'ils puissent être utilisés comme noms de répertoires. Quel est un court chemin pour faire ceci, éventuellement avec la compréhension de liste ou quelque chose?Convertir la liste des chaînes en noms de répertoires appropriés avec backslash

exemple avec le code plus:

directories = [] 
for s in schools: 
    words = s.split(' ') 
    directory = '\\ '.join(words) 
    directories.append(directory) 
+0

Bonjour, Jake - pas tout à fait. Pourriez-vous s'il vous plaît poster un exemple d'entrée/sortie – John

Répondre

2

Utilisez str.replace(), qui va être beaucoup plus efficace que la division et re-joindre. Si vous avez une liste, une liste de compréhension peut le faire pour chaque chaîne dans la liste:

escaped = [s.replace(' ', r'\ ') for s in list_of_strings] 
+0

Merci, que fait le 'r'? – Austin

+2

@Jake: c'est un littéral brut, donc je n'ai pas besoin d'échapper à l'antislash. Vous pouvez également utiliser ''\\' '. –

+0

Merci d'accepter cette réponse une fois qu'elle le permettra :) – Austin

0

Vous pouvez utiliser os.path.join car il renvoie des chemins qui prend en charge la plate-forme de croix. De cette façon est le moyen préféré de rejoindre les chemins de répertoire

import os 
directories = [os.path.join(s.split(' ')) for s in schools]