Подача строк и возврат каретки в данных: 0D 0A - PullRequest
0 голосов
/ 24 января 2012

Я пишу сценарий очистки данных (MS Smart Quotes и т. Д.), Который будет работать с таблицами mySQL, закодированными на Latin1. При сканировании данных я заметил тонну 0D 0A, где разрывы строк.

Поскольку я очищаю данные, я должен также обратиться ко всем 0D, удалив их? Есть ли когда-нибудь веская причина для сохранения 0D (возврата каретки)?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 января 2012

0D0A (\ r \ n) и 0A (\ n) - терминаторы строки; \ r \ n в основном используется в ОС Windows, \ n в системах Unix.

Есть ли когда-нибудь веская причина сохранить 0D больше?

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

1 голос
/ 24 января 2012

Комбинация CR / LF - вещь Windows. * Операционные системы NIX просто используют LF. Таким образом, основываясь на приложении, которое использует ваши данные, вам нужно будет решить, хотите ли вы / нужно отфильтровывать CR. См. Википедия на новой строке для получения дополнительной информации.

0 голосов
/ 11 февраля 2016

Python readline () возвращает строку, за которой следует \ O12. \ O означает Octal. 12 является восьмеричным для десятичного числа 10. Вы можете видеть в таблице ASCII, что 10 декабря - NL или LF. Новая строка или перевод строки.

Стандарт для конца строки в текстовом или скриптовом файле Unix.

http://www.asciitable.com/

Так что имейте в виду, что len () будет включать NL, если вы не попытаетесь прочитать после EOF, что len () никогда не будет нулевым.

Поэтому, если вы ВСТАВИТЕ любую строку текста, полученную Python readline (), в таблицу mysql, она будет содержать символ NL по умолчанию в конце.

...