2010-06-11 64 views
6

Trong C++ chúng ta có thể nhập nhiều dòng bằng cách đưa ra lựa chọn riêng của chúng ta về ký tự delimiting trong hàm getline() .. tuy nhiên tôi không thể làm tương tự trong Python !! nó chỉ có các phương thức raw_input() và sys.stdin.readline() đọc cho đến khi tôi nhấn enter. Có cách nào để tùy chỉnh này để tôi có thể xác định delimiter riêng của tôi?Python tương đương với C++ getline()

Trả lời

2

Bạn vẫn muốn nhấn enter để tạo nhiều dòng? Làm thế nào để bạn kết thúc đầu vào? Hoặc bạn có muốn chỉ định nhiều dòng trên một dòng không?

Nếu trước đây, cố gắng lặp raw_input() cho đến khi một cái gì đó được viết mà nói với nó để ngăn chặn:

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

Hoặc để chỉ định nhiều dòng trên một dòng duy nhất sử dụng một delimiter:

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

này phù hợp với nguyên nhân của tôi tốt .. :-) –

1

Bạn có thể thử sửa đổi phương thức này một chút để sử dụng và sử dụng nó trong chương trình của bạn.

Thứ nhất, nhập khẩu các mô-đun linecache:

import linecache 

Module linecache cho phép bạn truy cập vào bất kỳ dòng từ bất kỳ tập tin. Trong ba phương pháp của nó, phương pháp bạn có thể sử dụng nhiều nhất là đường nối. Cú pháp cho getline là như sau:

linecache.getline('filename', line_number) 

Nếu bạn có một tập tin gọi là 'myfile.txt' và muốn đọc dòng 138 từ nó, getline cho phép bạn làm như vậy một cách dễ dàng.

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

Sau đó, bạn có thể chỉ cần in retrieved_line hoặc xử lý dữ liệu của dòng 138 mà không thực hiện phẫu thuật trên chính tệp đó.

+0

thanx cho ur đề nghị .. :-) –

0

Bạn sẽ cần phải thực hiện một chức năng như vậy cho mình. Ví dụ:

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

đây cũng là good..will xem cái nào Cuối cùng tôi sử dụng .... –

Các vấn đề liên quan