У меня есть следующий код, который читает строки из базы данных и записывает соответствующие результаты в файл csv. Проблема, с которой я сталкиваюсь, заключается в том, что иногда в некоторых полях в разных строках происходит возврат каретки/перевод строки, из-за чего файл csv становится непригодным для использования из-за наличия фиктивных строк.
Например, вот пример того, что происходит, когда в данных SQL есть возврат каретки/перевода строки, и как это влияет на файл. ... Пример содержимого испорченного файла:
field1|field2|field3|field4|field5
value 1|value 2|value 3|value 4|value 5
value 1|value 2|value 3|value 4|value 5
value 1|value 2|val
ue 3|value 4|value 5
value 1|value 2|value 3|va
lue 4|value 5
Вот код, который записывает результаты SQL-запроса в выходной файл. То, что я пытаюсь сделать, это удалить любые результаты, которые имеют возврат каретки/перевод строки.
'''
While loop to read each row. if compares row[2] (updated) against the last record processed
'''
latest = params #Declare 'latest' variable for consumption by while loop
while row:
if row[2] > latest:
latest = row[2]
logger.debug("[%s] - Writing row %s", correlationId, row)
writer.writerow(row)
row = cursor.fetchone()
logger.info("[%s] - last letter date %s " % (correlationId, lastProcessed))
lastProcessedLog = open(LAST_PROCESSED_LOGFILE , 'wt')
lastProcessedString = str(latest)
lastProcessedString = lastProcessedString[0:19]
lastProcessedLog.write(lastProcessedString)
lastProcessedLog.close()
conn.close()
ofile.close()
logger.info("[%s] - Copying %s to root for loadBackflow as %s", correlationId, writeFile, outfile)
shutil.copyfile(writeFile, outfile)
logger.info("[%s] - Moving %s to completion folder %s", correlationId, writeFile, completionFolder)
shutil.move(writeFile, completionFolder)
Я попытался изменить строку write.write(row), чтобы включить замену, но получаю сообщение об ошибке. Точно так же я получаю ошибки при попытке использовать замену с помощью row = row.replace("\r\n", "")... Я вставил свои попытки и соответствующие ошибки ниже.
Любые идеи о том, как я могу удалить возвраты каретки/переводы строк во время их чтения из результатов SQL-запроса в файл данных, очень ценятся.
Заранее спасибо! :)
# Attempt1:
writer.writerow(row).replace("\r\n", "")
# Error:
Unexpected error: 'NoneType' object has no attribute 'replace'
# Attempt2:
row = row.replace("\r\n", "")
#Error:
Unexpected error: 'tuple' object has no attribute 'replace'
#Attempt3:
row = row.replace("\r", "")
row = row.replace("\n", "")
#Error:
Unexpected error: 'tuple' object has no attribute 'replace'