2012-11-30 12 views
5

Ein Doppelzitat sieht so aus". Wenn ich dies in eine Python-Zeichenfolge stecke, bekomme ich diese ' " '. In Python kann ich zwei doppelte Anführungszeichen in eine Zeichenfolge setzen ' "" ' und dies wird als zwei doppelte Anführungszeichen gedruckt. Ich kann jedoch kein einziges Doppelzitat in eine Zeichenfolge einfügen, wie zuvor ' " '. Ich mache dies in Eclipse mit Pydev und es gibt eine error: "encountered "\r" (13), after : "". Ich versuche, die folgenden mit dem Befehl Rohr und Dateinamen zu tun:Python String '"': einzelnes Doppelzitat in String

logA = 'thing.txt' 
cmdpipe = os.popen('copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"') 

Antwort

2

Sie müssen den Backslashes entkommen, sonst wird es seltsame Dinge tun.

logA = 'thing.txt' 
cmdpipe = os.popen(
    'copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"') 

Edit: Eine pythonic Weg wäre dies obwohl sein:

logA = 'thing.txt' 
cmdpipe = os.popen('copy "C:\\upe\\{}" "C:\\upe\\log.txt"'.format(logA)) 
+0

Große Antworten alle, danke! – user442920

3

Sie müssen die Schrägstriche entkommen:

logA = 'thing.txt' 
cmdpipe = os.popen('copy "C:\\upe\\' + logA + '"' + ' "C:\\upe\\log.txt"') 

Normalerweise würde man rohe Strings (r'...') verwenden, wenn es Schrägstriche innen ein String-Literal. Wie von @BrenBarn gezeigt, wird dies in diesem Fall jedoch nicht funktionieren.

+0

Eine Raw-Zeichenfolge funktioniert immer noch nicht, da der Backslash auch in einer Raw-Zeichenfolge am Ende immer noch das Anführungszeichen verlässt. Sie können keine rohe Zeichenfolge mit einer ungeraden Anzahl von abschließenden Backslashes haben. – BrenBarn

+0

@BrenBarn: Guter Fang, danke. – NPE

0

Der Schrägstrich nach upe wird die erste Apostroph Schließung zu entkommen:

'copy "C:\upe\' + logA + '"' + ' "C:\upe\log.txt"' 
--------------^ add an escape at least here, and it will work! 

Eine weitere Option ist Ihr zu komponieren Befehl in mehreren Schritten:

basepath = r'C:\upe' 
inpath = os.path.join(basepath, logA) 
outpath = os.path.join(basepath, 'log.txt') 
logA = 'thing.txt' 
command = 'copy "%s" "%s"' % (inpath, outpath) 

print command 

cmdpipe = os.popen(command)