2017-09-07 2 views
0

können Sie bitte einen Blick auf dieses Snippet werfen und mich wissen lassen, wie ich eine Variable in einem String in Python verketten kann?Verketten von Strings in Python

Ich versuche service in "Database Connections\\'service'.sde" und (r"C:\GIS\Maps\'.+service+.'.mxd")

service ="Electric" 
sde = "Database Connections\\'service'.sde" 
mxd = arcpy.mapping.MapDocument(r"C:\GIS\Maps\'.+service+.'.mxd") 

übergeben, so sieht die Ausgabe wie

sde = "Database Connections\\Electric.sde" 
mxd = arcpy.mapping.MapDocument(r"C:\GIS\Maps\Electric.mxd") 
+0

Wenn Ihre Frage ausreichend beantwortet wurde, können Sie [accept] (https://stackoverflow.com/help/someone-answers) die hilfreichste Antwort geben. –

Antwort

1

Diese wie String-Verkettung von Python ist funktioniert:

sde = "Database Connections\\" + service + ".sde" 
mxd = arcpy.mapping.MapDocument("C:\\GIS\\Maps\\" + service + ".mxd") 
+0

Danke Herr Geek, aber ich bekomme Fehler in der zweiten Zeile! –

+0

@MonaCoder Sie sollten das '\' und das 'r' entfernen, überprüfen Sie die aktualisierte Antwort. –

3

Ich denke, Ein besserer Weg ist die Verwendung von os.path.join:

import os 
mxd = arcpy.mapping.MapDocument(os.path.join(*"C:\\GIS\\Maps\\".split('\\') 
                + ["{}.mxd".format(service)])) 

Beachten Sie auch, dass Ihre Backslashes maskiert werden müssen.

+1

Mischen Sie nicht miteinander? Sollten Sie nicht jeder Komponente beitreten, z.B. 'os.path.join (*" C: \\ GIS \\ Maps \\ ". split ('\\') + [" {} .mxd ".format (Dienst)]' Sicherlich das '\\\' ist spezifisch für das Betriebssystem, und der Punkt von os.path.join ist zu beitreten, es OS Agnostiker machend. – Alexander

+0

@Alexander Ich bin ... gute Beobachtung und danke. –