2010-06-11 12 views
6

In C++ können wir mehrere Zeilen eingeben, indem wir in der Funktion getline() ein eigenes Begrenzungszeichen angeben. In Python ist das nicht möglich !! Es hat nur die Methoden raw_input() und sys.stdin.readline(), die gelesen werden, bis ich Enter drücke. Gibt es eine Möglichkeit, dies anzupassen, so dass ich ein eigenes Trennzeichen angeben kann?Python-Äquivalent von C++ getline()

Antwort

2

Möchten Sie dennoch die Eingabetaste drücken, um mehrere Zeilen zu erstellen? Wie beenden Sie die Eingabe? Oder möchten Sie mehrere Zeilen in einer Zeile angeben?

Wenn das ehemalige, versuchen Looping raw_input(), bis etwas geschrieben ist, dass es zu stoppen sagt:

lines = [] 
while True: 
    user_input = raw_input() 
    if user_input.strip() == "": # empty line signals stop 
     break 
    lines.append(user_input) 

oder mehrere Linien auf einer einzelnen Zeile mit einem Trennzeichen angeben:

lines = raw_input().split(";") 
+0

dies paßt meine Sache ganz gut .. :-) –

1

Sie können versuchen, diese Methode ein wenig zu ändern, um sie zu verwenden und in Ihrem Programm zu verwenden.

Zunächst importieren Sie die linecache Modul:

import linecache 

Das linecache Modul Sie jede Zeile aus einer beliebigen Datei zugreifen können. Von den drei Methoden, die Sie am häufigsten verwenden, ist getline. Die Syntax für getline ist wie folgt:

linecache.getline('filename', line_number) 

Wenn Sie eine Datei mit dem Namen ‚myfile.txt‘ und möchten Leitung 138 aus, es lesen, getline Sie so mit Leichtigkeit tun können.

Dann können Sie einfach recovered_line drucken oder die Daten der Zeile 138 anderweitig manipulieren, ohne die Datei selbst zu bearbeiten.

+0

Danke für ur Vorschlag .. :-) –

0

Sie müssen eine solche Funktion selbst implementieren. Zum Beispiel:

def getline(stream, delimiter="\n"): 
    def _gen(): 
    while 1: 
     line = stream.readline() 
     if delimiter in line: 
     yield line[0:line.index(delimiter)] 
     break 
     else: 
     yield line 
    return "".join(_gen()) 

import sys 
getline(sys.stdin, ".") 
+0

dies auch good..will zu sehen ist, welches ich endlich .... –

Verwandte Themen