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

时间:2018-02-04 06:45:38

标签: python text replace stream python-3.6

我需要的是一个Python 3函数(或其他),它将采用文本流(如sys.stdin或类似open(file_name, "rt")返回的文本流)并返回文本流以供其他人使用函数但删除所有空格,用逗号替换所有选项卡,并在消费者代码读取数据时动态地将所有字母转换为小写(“懒惰”方式)。

我认为在Python 3中有一种相当简单的方法可以像列表推导类似,但不知道到目前为止究竟是什么。

2 个答案:

答案 0 :(得分:0)

我不确定这是什么意思,但我能想到的最简单的方法是从文件继承(从open返回的类型)并覆盖read方法,以便在读取数据后执行所需的所有操作。一个简单的实现是:

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

答案 1 :(得分:0)

我相信你要找的是io模块,更具体地说是io.StringIO

然后,您可以使用open()方法获取初始数据并进行修改,然后传递它:

with open(file_name, 'rt') as f:
    stream = io.StringIO(f.read().replace(' ','').replace('\t',',').lower())