read.index()似乎读取了错误的索引?

时间:2018-07-18 09:34:44

标签: python

因此,我已经花了几天时间,无法弄清楚答案。但我将问题简化为最简单的形式(我认为)。我正在尝试在文件中找到两个不同的字符串,并阅读它们之间的文件部分。现在,我有一个测试器文件,其中实际上只有1 2 3 4 5 6 7 8 9等。我正在运行以下代码:

with open('Testing.txt', 'r') as file:
   read = file.read()
   if "4" in read:
        begin = read.index("4")
        print begin
        if "8" in read:
            end = read.index("8")
            file.seek(begin)
            print "The location to begin reading is", file.tell()
            data= file.read()[begin:end]
            print "data =", data

如果我从1开始,则代码可以正常工作。如果我从2以上开始,它会将数字拉到比列表更远的位置。我有点茫然为什么会这样。我希望我有道理!

1 个答案:

答案 0 :(得分:4)

创建file.seek(begin)后,file.read()将从begin而不是从文件开头读取文件。

因此,请创建file.seek(0)或更改计算数据的方式:data= file.read()[:end - begin]

但是为什么第二次读取文件,却已经在read变量中包含了文件内容。只要做:

data = read[begin:end]

此外:

  • 您可以使用正则表达式或split函数代替计算索引。

  • 避免使用read作为变量名,因为这会使习惯于使用打开文件读取的读者感到困惑。