Почему csv.reader с TextIOWrapper включает символы новой строки?Python

Программы на Python
Anonymous
Почему csv.reader с TextIOWrapper включает символы новой строки?

Сообщение Anonymous »

У меня есть две функции: одна загружает отдельные файлы CSV, а другая загружает zip-архив с несколькими файлами CSV.
Функция download_and_process_csv работает правильно и, похоже, заменяет новую строку символы через пробел.

'Курица, вода, кукурузная мука, соль, декстроза, сахар, фосфат натрия,
эриторбат натрия, нитрит натрия. Произведено на предприятии, где
присутствуют аллергены, такие как яйца, молоко, соя, пшеница, горчица, глютен,
овёс, молочные продукты.'

Функция download_and_process_zip по какой-то причине включает символы новой строки (\n\n). Я пробовал newline='' в io.TextIOWrapper, но он просто заменяет его на \r\n.

'Курица, вода, кукурузная мука, соль, декстроза, сахар, фосфат натрия,
эриторбат натрия, нитрит натрия. \n\nПроизведено на предприятии, где
присутствуют аллергены, такие как яйца, молоко, соя, пшеница, горчица, глютен,
овсянка, молочные продукты.'

Есть ли способ изменить download_and_process_zip так, чтобы символы новой строки исключались/заменялись, или мне придется перебирать все строки и вручную заменять символы?
@request_exceptions
def download_and_process_csv(client, url, model_class):
with closing(client.get(url, stream=True)) as response:
response.raise_for_status()
response.encoding = 'utf-8'
reader = csv.reader(response.iter_lines(decode_unicode=True))
process_copy_from_csv(model_class, reader)

@request_exceptions
def download_and_process_zip(client, url):
with closing(client.get(url, stream=True)) as response:
response.raise_for_status()

with io.BytesIO(response.content) as buffer:
with zipfile.ZipFile(buffer, 'r') as z:
for filename in z.namelist():
base_filename, file_extension = os.path.splitext(filename)
model_class = apps.get_model(base_filename)
if file_extension == '.csv':
with z.open(filename) as csv_file:
reader = csv.reader(io.TextIOWrapper(
csv_file,
encoding='utf-8',
# newline='',
))
process_copy_from_csv(model_class, reader)


Подробнее здесь: https://stackoverflow.com/questions/786 ... characters

Вернуться в «Python»