簡體   English   中英

如何使用Python跳過文件中的2行?

[英]How to skip 2 lines in a file with Python?

我有一系列文件,我想從每個文件中提取一個特定的數字。 在每個文件中我都有這一行:

name, registration num

並且正好有兩行后面有注冊號。 我想從每個文件中提取這個數字。 並把它作為一個字典的值。任何人都知道它是如何可能的?

我當前沒有實際工作的代碼如下所示:

matches=[]
for root, dirnames, filenames in os.walk('D:/Dataset2'):  
    for filename in fnmatch.filter(filenames, '*.txt'):   
        matches.append([root, filename])

filenames_list={}       
for root,filename in matches:
    filename_key = (os.path.join(filename).strip()).split('.',1)[0]

    fullfilename = os.path.join(root, filename)
    f= open(fullfilename, 'r')
    for line in f:
        if "<name, registration num'" in line:
            key=filename_key
            line+=2
            val=line

當我想跳過一行時,我通常使用next() ,通常是文件的標題。

with open(file_path) as f:
    next(f) # skip 1 line
    next(f) # skip another one.
    for line in f:
        pass # now you can keep reading as if there was no first or second line.

注意:在Python 2.6或更早版本中,您必須使用f.next()

一種方法是將整行加載到數組中,然后從中讀取所需的行。

名為testfile的文件包含以下內容:

A1
B2
C3
D4
E5

一個程序test.py:

#!/usr/bin/env python

file = open('testfile')
lines = file.readlines()[2:]
file.close()

for line in lines:
    print(line.strip())

輸出:

$./test.py
C3
D4
E5

編輯:我再次閱讀了這個問題,發現你只想要一行。 然后你可以刪除: ,並使用f.getlines()[2]來獲取文件中的第三行


  • 或者你可以使用f.getline()三次,然后忽略前兩個

  • 或者您可以for line in f類型循環中使用for line in f ,並忽略前兩行(具有遞增計數器)

我想這樣的東西會起作用......

f= open(fullfilename, 'r')
for line in f:
    if "name, registration num" in line:
        key=filename_key
        break
f.readline()
res = f.readline()[:-1] #removed trailin newline
from itertools import islice
with open('data.txt') as f:
    for line in islice(f, 2, None):
        print line

一般來說,如果你想對循環中的python迭代器做一些事情,比如前面兩個,我發現一個好的第一個看的地方是import itertools並看看這里 在您的情況下,您可能會從他們的consume實施中受益。

值得一看,看看之前是否還沒有涵蓋過這個問題。 編輯:確實 - 看這里 ,其中包括對python迭代器的一個很好的討論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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