[英]Python - grab lines from text file, lines x-y
可以通過以下方式完成獲取文本文件的前10行的方法:
with open("myfile.txt") as myfile:
lines = [next(myfile).strip() for x in xrange(10)]
這將打印前10行
但是,如果我只想要5-10行怎么辦? 我該怎么做? 文件不小,它將很大。 我需要一種有效的方法來做到這一點。
謝謝。
到目前為止,最簡單的方法是使用itertools.islice
:
with open('myfile.text') as f:
lines = islice(f, 5, 11)
這樣做的好處是,它永遠不會加載整個文件。 它只會完成所需的工作。
請注意, itertools
中的函數是惰性的,因此您需要在關閉文件之前完成使用行的操作,或者將islice
包裝在list()
以強制求值。
如何切片您已經擁有的列表。
with open("myfile.txt") as myfile:
lines = [next(myfile).strip() for x in xrange(10)][5:10]
如果您知道要從哪里開始,則只需更改例如for循環中的范圍。
var1 = 5
var2 = 10
for x in range(var1, var2):
會從5循環到10,當然您可以進一步調整變量。
我會做這樣的事情:
>>> with open("myfile.txt") as myfile:
>>> lines = myfile.read().split('\n')[5:10]
Split將把它一行一行地分隔成一個行數組,[5:10]將返回從5到10的數組元素,但是變量“ lines”將是一個數組,因此,只得到一行字符串5到10,您可以:
>>> with open("myfile.txt") as myfile:
>>> lines = '\n'.join(myfile.read().split('\n')[5:10])
這里唯一的區別是'\\ n'.join()部分,該部分僅獲取行數組的每個元素,並將它們連接到由換行符分隔的字符串中。
讀取文件並將第x到y行作為內容變量的列表:
with open('content.txt') as f:
content=f.read().split('\n')[x-1:y]
照顧'\\ n'和'\\ r \\ n'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.