簡體   English   中英

Python-從文本文件中獲取行,行xy

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM