Hướng dẫn next line in for loop python - dòng tiếp theo trong Python cho vòng lặp

Tôi có một tệp mà tôi muốn nhận từng dòng cùng một lúc, nhưng một khi nó đến một dòng cụ thể, tôi cần có được một vài thông tin tiếp theo.

Đây là một mẫu mã:

rofile = open('foo.txt', 'r')
for line in rofile:
    print line
    if(line.strip() == 'foo'):
        line = line.next()
        print line
        line = line.next()
        print line
        line = line.next()
        print line

Khi tôi quay lại và lặp lần thứ hai, câu lệnh in đầu tiên đó sẽ in dòng thứ 5 trong tệp. Có cách nào có thể để làm điều này không?

Chỉnh sửa: Xin lỗi vì đã không làm rõ các chi tiết. rofile là một đối tượng tệp mà tôi đang lặp lại. Liệu next() có phải là phương pháp thực để có được dòng tiếp theo khi sử dụng tệp hay không, tôi không biết. Tôi không có nhiều kinh nghiệm với thao tác tập tin trong Python.

Đã hỏi ngày 26 tháng 11 năm 2012 lúc 19:52Nov 26, 2012 at 19:52

Hướng dẫn next line in for loop python - dòng tiếp theo trong Python cho vòng lặp

Rob Avery Ivrob Avery IVRob Avery IV

3,4529 huy hiệu vàng47 Huy hiệu bạc71 Huy hiệu đồng9 gold badges47 silver badges71 bronze badges

2

Bạn có thể sử dụng iter để chuyển đổi đối tượng của mình thành một thứ có thể hỗ trợ

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
0.

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line

Như đã chỉ ra trong các bình luận, nếu đối tượng của bạn đã là người lặp, thì bạn không cần phải lo lắng về iter (đây là trường hợp với các đối tượng

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
2). Tuy nhiên, tôi để nó ở đây vì nó hoạt động cho trường hợp của bất kỳ sự khác biệt nào (ví dụ:
irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
3s).

Đã trả lời ngày 26 tháng 11 năm 2012 lúc 19:53Nov 26, 2012 at 19:53

Hướng dẫn next line in for loop python - dòng tiếp theo trong Python cho vòng lặp

Mgilsonmgilsonmgilson

290K61 Huy hiệu vàng608 Huy hiệu bạc676 Huy hiệu Đồng61 gold badges608 silver badges676 bronze badges

6

Tùy thuộc vào loại đối tượng mà rofile là, tôi có thể nghĩ ra một vài cách để làm điều này.

Danh sách các chuỗi

Nếu bạn có thể nhận được nó chỉ đơn giản là một danh sách các chuỗi tạo nên các dòng của tệp:

for index, line in enumerate(rofile):
   if line == 'foo':
       for a in range(index, index + HOW_MANY_LINES_YOU_WANT):
           print rofile[a]

Có thể lặp lại

Nếu tệp đã được điều đó có thể đi được:

for line in rofile:
    print line
    if line == 'foo':
        for a in range(3): # Just do it 3 times
            print line.next()
            # After this happens and the for loop is restarted,
            # it will print the line AFTER

Bạn có thể thấy trong ví dụ Quickie này, tôi đã viết rằng nó sẽ hoạt động theo cách này như một điều đáng tin cậy:

>>> k = iter([1,2,3,4])
>>> for a in k:
    print 'start loop'
    print a
    if a == 2:
        print 'in if'
        print k.next()
        print 'end if'
    print 'end loop'


start loop
1
end loop
start loop
2
in if
3
end if
end loop
start loop
4
end loop

Đã trả lời ngày 26 tháng 11 năm 2012 lúc 20:04Nov 26, 2012 at 20:04

JDOTJDOTJDOTJDOTjdotjdot

15.5K12 Huy hiệu vàng63 Huy hiệu bạc116 Huy hiệu đồng12 gold badges63 silver badges116 bronze badges

Đừng sử dụng vòng lặp

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
5 nếu bạn không thực sự muốn làm điều gì đó cho mọi dòng. Một tùy chọn có thể là:

try:
    while True:
        line = file.next()
        #do stuff
        if line == 'foo':
            #do other stuff
except(StopIteration):
     #go on with your life

Đã trả lời ngày 26 tháng 11 năm 2012 lúc 20:07Nov 26, 2012 at 20:07

PeterbbpeterbbPeterBB

3432 Huy hiệu bạc9 Huy hiệu Đồng2 silver badges9 bronze badges

4

Đây là một cách đơn giản để thực hiện nó cho một đối tượng tệp:

with open('foo.txt', 'r') as rofile:
    for line in rofile:
        print line,
        if line.strip() == 'foo':
            for _ in xrange(3):  # get the next 3 lines
                try:
                    line = rofile.next()
                except StopIteration:
                    break
                print line,

Việc cố gắng/ngoại trừ là cần thiết trong trường hợp không có 3 dòng nữa sau khi thấy dòng 'foo'.

Đã trả lời ngày 26 tháng 11 năm 2012 lúc 23:28Nov 26, 2012 at 23:28

Hướng dẫn next line in for loop python - dòng tiếp theo trong Python cho vòng lặp

Martineaumartineaumartineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

Tôi đã có một vấn đề tương tự và sử dụng câu lệnh

irofile = iter(rofile)
for line in irofile:
    print line
    if(line == 'foo'):
        line = next(irofile)  #BEWARE, This could raise StopIteration!
        print line
6 thay vào đó hoạt động trong trường hợp của tôi

Đã trả lời ngày 3 tháng 11 năm 2016 lúc 10:20Nov 3, 2016 at 10:20

Làm thế nào để bạn đi đến dòng tiếp theo trong một vòng lặp trong Python?

Phương thức tệp python next () được sử dụng khi một tệp được sử dụng làm trình lặp, thường là trong một vòng lặp, phương thức tiếp theo () được gọi là lặp đi lặp lại.Phương thức này trả về dòng đầu vào tiếp theo hoặc tăng sự ngăn chặn khi EOF bị nhấn.next() is used when a file is used as an iterator, typically in a loop, the next() method is called repeatedly. This method returns the next input line, or raises StopIteration when EOF is hit.

Làm thế nào để bạn viết một dòng mới trong một vòng lặp?

Writerows (['\ n']) (lập danh sách một phần tử) hoặc writer.writerow ('\ n') (hàng, không phải hàng).Lưu câu trả lời này. writerow('\n') (row, not rows). Save this answer.

Làm thế nào để bạn bỏ qua dòng tiếp theo trong Python?

Bạn không thể chia một câu lệnh thành nhiều dòng trong Python bằng cách nhấn Enter.Thay vào đó, hãy sử dụng dấu gạch chéo ngược (\) để chỉ ra rằng một câu lệnh được tiếp tục trên dòng tiếp theo.use the backslash ( \ ) to indicate that a statement is continued on the next line.

Làm thế nào để bạn chuyển sang dòng tiếp theo trong một tệp văn bản trong Python?

Trong Python, ký tự dòng mới \ n, được sử dụng để tạo ra một dòng mới.the new line character “\n” is used to create a new line.