如何在 Python 中动态预处理文本流?

Iva*_*van 6 python text replace stream python-3.6

我需要的是一个 Python 3 函数(或其他函数),它会接受一个文本流(像sys.stdin或 返回的那样open(file_name, "rt"))并返回一个文本流以供其他一些函数使用,但删除所有空格,用逗号替换所有制表符和当消费者代码读取数据时,将所有字母即时转换为小写(“懒惰”方式)。

我认为在 Python 3 中有一种相当简单的方法可以做到这一点,比如类似于列表推导式,但目前不知道它到底是什么。

小智 1

我不确定这就是你的意思,但我能想到的最简单的方法是从 file 继承(从 open 返回的类型)并重写 read 方法以在读取数据后执行你想要的所有操作。一个简单的实现是:

class MyFile(file):
    def read(*args, **kwargs):
         data = super().read(*args,**kwargs)
         # process data eg. data.replace(' ',' ').replace('\t', ',').lower()
         return data
Run Code Online (Sandbox Code Playgroud)