告诉文件中字符串的位置

时间:2015-06-09 09:49:12

标签: python

此代码用于打印包含给定字符串的行号:

import os

f = open('document.xml', 'r+')

for (i, line) in enumerate(f, start=1):
    if "<w:t>Omg" in line: print(i)

但我想知道在字符串开始之前文档中有多少字符。所以我认为是一个聪明人,并将其改为:

import os

f = open('document.xml', 'r+')

for (i, line) in enumerate(f, start=1):
    if "<w:t>Omg" in line: print(f.tell())

但这会引发错误:

if "<w:t>Omg" in line: print(f.tell())

OSError: telling position disabled by next() call

我不能将行号用于我想要做的事情,因为它必须使用生成的xml文档,而不使用换行符。

1 个答案:

答案 0 :(得分:2)

循环更新文件位置:

target = "<w:t>Omg"
offset = 0
for line in f:
    if target in line:
        print(offset + line.find(target))
    offset += len(line)

或者,不依赖于文件上的迭代(使用next),并使用文件对象的readlineread方法;然后,您可以使用file.tell方法。

target = "<w:t>Omg"
offset = 0
while True:
    offset = f.tell()
    line = f.readline()
    if not line:
        break
    if target in line:
        print(offset + line.find(target))