Python nghiệp dư ở đây. Tôi có một tập tin văn bản liệt kê thông tin trên hàng ngàn dòng và tôi đang cố gắng chọn một dòng và 2-3 dòng sau dựa trên việc chúng có khớp với một mẫu hay không. Tôi đã lọc các tập tin xuống từ bản gốc để chỉ chứa các bộ phận của tập tin quan tâm đến tôi như vậy tập tin hiện tại của tôi trông như thế này:Vấn đề với việc chọn nhiều dòng của tài liệu txt và ghi vào tài liệu văn bản mới trong python
trig1.RESP:
stim4: silence.wav
trig1.RESP:
trig6.RESP: 1
trig1.RESP:
trig1.RESP:
trig5.RESP: 1
stim5: silence.wav
trig1.RESP:
trig6.RESP: 1
stim3: silence.wav
trig1.RESP:
stim5: silence.wav
trig1.RESP:
trig6.RESP: 1
và vân vân và vân vân ... Về cơ bản những gì Tôi đang cố gắng làm là viết tất cả các dòng có chứa phần silence.wav của dòng và sau đó hai dòng tiếp theo sau nó. Tôi sử dụng đoạn mã sau:
parsed_output = open("name-of-file-to-be-written", "w")
filtered_input = open("name-of-file-that-has-above-data", "r")
for line in filtered_input:
if "silence.wav" in line and "trig1" in filtered_input.next():
parsed_output.write(line)
parsed_output.write(filtered_input.next())
parsed_output.close()
này hoạt động tốt cho hầu hết các phần vì nó in dòng silence.wav và dòng trong đó có các phản ứng (phần tôi quan tâm nhất, các trig1 trước một phản ứng tại thời điểm này là ít quan trọng). Tuy nhiên, vấn đề tôi gặp phải là khi các đường đi:
stim3: silence.wav
trig1.RESP:
stim5: silence.wav
Kể từ đầu ra của tôi sau đó sẽ viết stim3 (dòng hiện) và stim5 (dòng tiếp theo sau khi bỏ qua trig1), tôi nghĩ rằng nó chuyển sang tiếp theo "stim: silence.wav" và bỏ qua kích thích5 vì nó được đưa vào lệnh trước đó khi nó được viết. Tôi muốn trig6.RESP: 1 sau khi kích thích5 nhưng đầu ra của tôi không hiển thị nó vì lý do đó tôi mô tả. Có cách nào tôi có thể làm cho nó không bỏ qua kích thích5?
Xin lỗi nếu điều này thực sự dài. Cảm ơn bạn trước!
Lề nhỏ: Tôi khuyên bạn nên đóng tất cả các tệp bạn đã mở. Cách tốt nhất để làm điều đó - sử dụng câu lệnh 'with'. – cleg