我有一系列文件,我想从每个文件中提取一个特定的数字。 在每个文件中我都有这一行:
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
答案 0 :(得分:8)
当我想跳过一行时,我通常会使用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()
答案 1 :(得分:2)
一种方法是将整行加载到数组中,然后从中读取所需的行。实施例
名为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
类型循环,只需忽略前两行(具有递增计数器)
答案 2 :(得分:0)
我想这样的事情会起作用......
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
答案 3 :(得分:0)
from itertools import islice
with open('data.txt') as f:
for line in islice(f, 2, None):
print line
答案 4 :(得分:0)