如何一次从python文件中读入一个字符?

2024-05-17 11:13:35 发布

您现在位置: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.8e\n" % is_float(n))

Tags: 代码src列表ifissys数字ch
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))

事实上要容易得多。itertools中有一个很好的实用程序,经常被忽略。;—)

for character in itertools.chain.from_iterable(open('file.data')):
    process(character)

下面是一种生成一次一个字符的文件迭代器的技术:

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
        ...
  • with-statement打开文件并在完成后无条件地关闭它。在
  • 通常,read one character的方法是f.read(1)。在
  • partial通过始终使用参数1调用f.read来创建一个零参数函数。在
  • 双参数形式的iter()创建了一个迭代器,该迭代器循环直到看到空字符串文件结束标记为止。在

相关问题 更多 >