Добрый день, у меня есть текстовый файл, извлеченный из поля комментариев приложения географических информационных систем (ГИС) (имя не разглашается). Мне нужно проанализировать этот текст и создать красивый отчет. Текст состоит из отдельных строк, которые заканчиваются возвратом каретки/переводом строки (x0D/x0A). Однако некоторые строки содержат новую строку в теле текста. Не уверен, как это происходит. Причина не имеет значения. Мне просто нужно разобраться. Мой текст выглядит так (данные изменились, но основная идея та же) --
это строка 01
это строка 02
это строка 03
и она содержит новую строку после строки из 03 символов
это строка 04
Я не могу правильно представить текстовый файл в этом посте, потому что моя вырезка и пост удаляют CR / LF, но после каждой «строки 0?» есть CR / LF. нить. Этот механизм публикации не позволяет прикреплять файлы, иначе я бы прикрепил этот короткий текстовый файл. Мне нужно прочитать каждую строку целиком до CR/LF и распечатать ее. Строки 1 и 2 выводят OK. Строка 3 печатается до первого 03. Итак, когда я прочитал это со следующим фрагментом --
import sys
import os
if __name__ == '__main__':
if sys.version_info >= (3, 0):
print ("script: EOL_Python_test.py");
print ("Python version: " + str(sys.version_info));
# vars
input_file = r"EOL_test_file.txt";
input_data_line = "";
line_number = 0;
output_line = "";
# end vars def
if os.path.isfile(input_file):
output_line = "processing file: " + input_file + "\n";
print (output_line);
original_file = open(input_file)
input_data_line = original_file.readline().strip("\r\n")
while input_data_line != "":
line_number = line_number + 1;
output_line = "line #:" + str(line_number) + " " + \
str(input_data_line);
print (output_line)
input_data_line = original_file.readline().strip("\r\n")
# regex for replacing EOL with newline? "\r\n?|\n"
original_file.close();
else:
print ("must run on Python 3+, now exiting...");
exit;
все печатает нормально, кроме 3-й и 4-й строк. Строка 3 печатает 3-ю строку до новой строки. Строка 4 печатает оставшуюся часть 3-й строки. Затем программа продолжает работу, добавляя дополнительную строку к переменной счетчика строк и, конечно же, печатая слишком много строк.
Итак... почему Python ломается как на новой строке, так и на комбо возврата каретки/новой строки при чтении текстового файла? Есть ли способ удалить новую строку перед вызовом readlines()? Использовать регулярное выражение?
Идеи? Тай, Глен
\` instead. If it is only one file you have to do this to, it may be worth editing the file so that it says
\\n` вместо\n
- person sonrad10   schedule 05.06.2016