2016-06-16 13 views
1

Ich habe Probleme mit Konsolenbefehlen.Druckkonsolenbefehl genau, wie ich ihn eingegeben habe

import re 
import string 
import sys 
import subprocess 


productname= "".join(sys.argv[1:]) 

def check(): 
    global productname 
    productname= productname.replace(' ','') 
    productname= productname.replace('\n','') 

    if len(productname) >= 3: 
     print "Product name: %s" %(sys.argv[1:None]) 

check() 

Gerade jetzt, wenn ich in python test.py a a a s in der Konsole Befehlszeile eingeben, druckt es aus:

Product name: ['a', 'a', 'a', 's'] 

Ich will es so, dass es die Ausgabe genau druckt, wie ich es in eingegeben Wie. Ich mach das?

Also im Grunde sollte die Ausgabe sein: Product name: a a a s

Das ist: ein (Leerzeichen) ein (Raum) (Leerzeichen) ein (Raum) (Raum) s

Meine Eingaben manchmal in Räumen variieren, so kippe habe ich es mit

' '.join(sys.argv[1:None])).. 
+0

'" ".join (sys.argv [1:])' –

Antwort

-1

fest einprogrammiert das ist, weil standardmäßig das Array String in diesem Format dazu gezwungen wird. (Wegen des %s Formatierer, den Sie verwenden.)

Wenn Sie etwas anderes möchten, konvertieren Sie das Array zu der Zeichenfolge, die Sie zuerst möchten. Eine einfache Lösung für Sie wäre ' '.join(sys.argv[1:None]).

+0

Sie haben die Frage falsch verstanden. Das OP möchte den von der Befehlszeile gesendeten Whitespace als eine einzelne Zeichenfolge beibehalten, anstatt Whitespace automatisch in eine Liste zu teilen und es hübsch zu drucken. – TigerhawkT3

+0

@ TigerhawkT3 Ja, das ist was ich brauche. –

1

Wenn Sie Ihre genaue Eingabe möchten, können Sie es auf der Kommandozeile eingeben, wie:

python test.py "a a a s" 

Das bedeutet, dass argv[1] die gesamte Zeichenfolge wird "a a a s", so Code wie dies funktionieren würde:

productname = sys.argv[1] 

# Other stuff 

# Use .split() to get the number of letters in the string. 
if len(productname.split()) >= 3: 
    print "Product name: %s" % (productname) 

Dadurch wird sichergestellt, dass Sie exakt die gleiche Zeichenkette erhalten, einschließlich der Leerzeichen, die Sie eingegeben haben und die Sie dann nach Bedarf reinigen und ändern können.

+0

Mein Fehler, vergessen, die letzte Zeile des Codes zu ändern, um den Fix zu reflektieren. Hoffe, das funktioniert besser für dich. –

+0

Wie entferne ich die [] und die 'in der Ausgabe? –

+0

@Nikkibee - Wenn es das tut, ist die Zeichenfolge, die Sie interessiert, immer noch in einer Liste. Rufen Sie das tatsächliche Element ab, das in dieser Antwort beschrieben wird. – TigerhawkT3