Как изменить обратно строку во время чтения файла - PullRequest
1 голос
/ 04 февраля 2011

В моем коде у меня напечатана длина строки, например:

line = file.readline()
print("length = ", len(line))

, после чего я начинаю сканировать строки, выполняя это:

for i in range(len(line)):
        if(file.read(1) == 'b'):
            print("letter 'b' found.")

Проблема в том, чтоЦикл for начинает читать строку 2 файла.Как я могу заставить его начать чтение со строки 1, не закрывая и не открывая файл заново?

Ответы [ 4 ]

2 голосов
/ 04 февраля 2011

Можно использовать file.seek для перемещения позиции следующего чтения, но это неэффективно. Вы уже прочитали в строке, так что вы можете просто обработать line без необходимости читать его во второй раз.

with open(filename,'r') as f:
    line = f.readline()
    print("length = ", len(line))
    if 'b' in line:
        print("letter 'b' found.")

    for line in f: 
    ...
1 голос
/ 04 февраля 2011

Похоже, вам нужно обрабатывать первую строку специально.

lineno = 1
found = False
for line in file:
    if 'b' in line:
        found = True

    if lineno == 1:
        print("length of first line: %d" % len(line))
    lineno += 1

if found:
    print("letter 'b' found.")
0 голосов
/ 04 февраля 2011
#! usr/bin/env python

#Open the file , i assumed its called somefile.txt
file = open('somefile.txt.txt','r')
#Lets loop through the lines ... 
for line in file.readlines():
    #test if letter 'b' is in each line ... 
    if 'b' in line: 
        #print that we found a b in the line
        print  "letter b found"
0 голосов
/ 04 февраля 2011

Звучит так, будто вы хотите что-то вроде этого:

with open('file.txt', 'r') as f:
    for line in f:
        for character in line:
            if character == "b":
                print "letter 'b' found."

или если вам просто нужно число:

with open('file.txt', 'r') as f:
    b = sum(1 for line in f for char in line if char == "b")
print "found %d b" % b
...