2010-06-11 106 views
6

在C++中,我們可以通過在getline()函數中給我們自己的分隔字符選擇來輸入多行。但是我不能在Python中做同樣的事情!它只有raw_input()和sys.stdin.readline()方法可讀,直到我按下回車鍵。有沒有什麼方法來定製這個,以便我可以指定我自己的分隔符?python等價的C++ getline()

回答

2

你還想按回車來創建多行嗎?你如何結束投入?或者你想在一行上指定多行?

如果是前者,儘量循環的raw_input(),直到東西寫在告訴它停止:

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

或是用分隔符在一行上指定多個行:

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

這適合我的事業就好了.. :-) – 2010-06-15 07:50:05

1

您可以嘗試稍微修改此方法以使用它並在程序中使用它。

首先,導入linecache模塊:

import linecache 

的linecache模塊允許您從任何文件訪問的任何行。在三種方法中,你可能使用最多的是getline。對於函數getline的語法如下:

linecache.getline('filename', line_number) 

如果你有一個叫做「myfile.txt的」的文件,並想從中讀取線138,函數getline可以讓你輕鬆做到這一點。

retrieved_line = linecache.getline('myfile.txt', 138) 

然後,您可以簡單地打印retrieve_line或以其他方式操作138行的數據,而無需對文件進行手術。

+0

thanx的烏拉圭回合的建議.. :-) – 2010-06-15 07:49:28

0

您將需要自己實現這樣的功能。例如:

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

這也是good..will看到我終於用哪一個.... – 2010-06-15 07:50:48