Перекодировать поток Unicode как Ascii, игнорируя ошибки

Я пытаюсь взять поток файлов Unicode, который содержит нечетные символы, и обернуть его потоковым считывателем, который преобразует его в Ascii, игнорируя или заменяя все символы, которые не могут быть закодированы.

Мой поток выглядит так:

"EventId","Rate","Attribute1","Attribute2","(。・ω・。)ノ"
...

Моя попытка изменить поток на лету выглядит так:

import chardet, io, codecs

with open(self.csv_path, 'rb') as rawdata:
    detected = chardet.detect(rawdata.read(1000))

detectedEncoding = detected['encoding']
with io.open(self.csv_path, 'r', encoding=detectedEncoding) as csv_file:
    csv_ascii_stream = codecs.getreader('ascii')(csv_file, errors='ignore')
    log( csv_ascii_stream.read() )

Результат наlog линия это:UnicodeEncodeError: 'ascii' codec can't encode characters in position 36-40: ordinal not in range(128) хотя я явно создал StreamReader сerrors='ignore'

Я хотел бы, чтобы результирующий поток (при чтении) получился так:

"EventId","Rate","Attribute1","Attribute2","(?????)?"
...

или, в качестве альтернативы,"EventId","Rate","Attribute1","Attribute2","()" (с помощью'ignore' вместо'replace')

Почему исключение происходит в любом случае?

Я видел множество проблем / решений для декодирования строк, но моя задача - изменить поток во время его чтения (используя.next()), поскольку файл потенциально слишком велик для одновременной загрузки в память с использованием.read()

Ответы на вопрос(2)

Ваш ответ на вопрос