Как читать по одному символу за раз из файла в Python?
Я хочу прочитать в списке чисел из файла как символы по одному символу за раз, чтобы проверить, что это за символ, будь то цифра, точка, A + или -, e или E или какой-либо другой символ...а затем выполнить любую операцию, которую я хочу, основываясь на этом. Как я могу это сделать, используя существующий код, который у меня уже есть? Это пример, который я пробовал, но не работал. Я новичок в Python. Заранее спасибо!
import sys
def is_float(n):
state = 0
src = ""
ch = n
if state == 0:
if ch.isdigit():
src += ch
state = 1
...
f = open("file.data", 'r')
for n in f:
sys.stdout.write("%12.8en" % is_float(n))
3 ответов
for x in open()
читает строки из файла. Прочитайте весь файл в виде блока текста, затем пройдите через каждый символ текста:
import sys
def is_float(n):
state = 0
src = ""
ch = n
if state == 0:
if ch.isdigit():
src += ch
state = 1
...
data = open("file.data", 'r').read()
for n in data: # characters
sys.stdout.write("%12.8e\n" % is_float(n))
вот метод, чтобы сделать итератор файла с одним символом за раз:
from functools import partial
with open("file.data") as f:
for char in iter(partial(f.read, 1), ''):
# now do something interesting with the characters
...
- на С-заявлением открывает файл и безоговорочно закрывает его, когда вы закончите.
- обычный способ читать один символ is
f.read(1)
. - на частичная создает функцию нулевых аргументов, всегда вызывая Ф.читать С аргументом 1.
- два форма аргумента iter () создает итератор, который выполняет цикл, пока вы не увидите маркер конца файла пустой строки.
на самом деле все гораздо проще. В itertools есть хорошая утилита, которой часто пренебрегают. ;-)
for character in itertools.chain.from_iterable(open('file.data')):
process(character)