У меня есть список значений и вам нужно удалить возвращаемые возвраты каретки всякий раз, когда они встречаются в списке значений.Заменить возврат каретки в списке python
Формат файла, который я ищу, чтобы удалить их, выглядит следующим образом.
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
Я ищу для решения ситуации, как один выше, где есть заблудшие возвраты каретки в 3-е и 4-е величин в течение последних 2-х строк данных.
Я видел несколько сообщений о том, как обращаться с этим, но пока ничего не сработало для этой ситуации. Я вставил код, который я пытался сделать до сих пор.
import os
import sys
filetoread = 'C:\temp\test.dat'
filetowrite = 'C:\emp\test_updated.dat'
'''
Attempt 1
'''
with open(filetoread, "r+b") as inf:
with open(filetowrite, "w") as fixed:
for line in inf:
fixed.write(line)
'''
Attempt 2
'''
for line in filetoread:
line = line.replace("\n", "")
'''
Attempt 3
'''
with open(filetoread, "r") as inf:
for line in inf:
if "\n" in line:
line = line.replace("\n", "")
Вы либо не обработки перевода строки или обработки * все * пе wlines. Число постоянных разделителей '|' в каждой строке? Затем вы можете определить, когда нужно удалить новую строку. –
И просто чтобы проверить, ваш CSV-файл не использует кавычки вокруг этих значений, правильно? Поскольку модуль 'csv' может * обрабатывать новые строки в цитируемых значениях *. –
Одна из причин, по которой ваш код может не работать, - это пути, которые вы используете. Python читает одиночные \ символы как escape-последовательности, а '\ t' - символ табуляции. Итак, '' C: \ temp \ test.dat'' интерпретируется как ''C: emp est.dat''. Чтобы исправить это, используйте строковый литерал - положите 'r' непосредственно перед первой цитатой:' r'C: \ temp \ test.dat''. –
MattDMo