#python #editor
#python #редактор
Вопрос:
Пример текста 1 — это вывод выдержки из некоторого текста, который я пытаюсь отформатировать (не позволил бы мне вставить его непосредственно в исходный формат или прикрепить img). Вывод генерируется из следующего:
fhandle = open('legalcode.txt')
for line in fhandle:
line = line.strip()
print(repr(line))
hold = input()
Строка 2 моего вывода просто пуста, и похоже, что я тоже получаю пустые строки? Я ищу разъяснения относительно того, что это за пустое пространство в строке 2, и рекомендации по удалению пустых строк. Все текущие результаты поиска обсуждают только удаление строк из списков.
Заранее благодарю вас за помощь.
РЕДАКТИРОВАТЬ 1
Я использовал следующее, чтобы удалить ‘ ‘, как обсуждалось:
fhandle = open('legalcode.txt')
for line in fhandle:
line = line.strip()
line = line.strip('r')
if line == '':
continue
print(repr(line))
Но, как вы можете видеть в примере текста 2, в предпоследней строке все еще есть неопознанный пробел. Существует ли альтернативный метод отображения скрытых символов?
РЕДАКТИРОВАТЬ 2
Текстовый файл, с которым я работаю: https://github.com/Achulhu/Legal-Code-Reformat
Исходный текст можно найти по адресу: https://www.ilga.gov/legislation/ilcs/ilcs5.asp?ActID=3992amp;ChapterID=35
РЕДАКТИРОВАТЬ 3
Я интегрировал рекомендацию @Arseniy для [ord] с текущим прогоном:
fhandle = open('legalcode.txt','r')
for line in fhandle:
line = line.strip()
line = line.strip('r')
if line == '':
continue
print(repr(line),[ord(c) for c in line])
Однако [ord] не присваивает этому пространству идентификатор (пример текста 3). Для пояснения я использую ОС Windows и вызываю ее из командной строки. Он был написан на ATOM, и я также попытался запустить его через IDLE, чтобы посмотреть, помогло ли это.
Комментарии:
1. Кавычки там, потому что вы использовали
repr()
, который специально заключает строки в кавычки. Почему вы используетеrepr()
, если вы не хотите такого поведения?2. Repr() используется только для того, чтобы показать мне, что там есть. Эти пробелы существуют независимо.
3. В этих случаях
line
это пустая строка, потому что в файле была пустая строка. Вы хотите удалить пустые строки из фактического файла или просто пропустить их печать в цикле?4. В конце концов, я их удалю, но сейчас я просто пытаюсь понять разницу между строкой 2 и строкой 4 моего вывода. Я добавил: *** если строка == ‘ ‘: продолжить *** и это решает строку 4, однако это не решает строку 2 образца текста. 🙁
5. Первая строка выглядит так, как будто она обрезана — она заканчивается двойной кавычкой, но не начинается с единицы. Также во второй строке вообще нет кавычек, что не согласуется с
repr()
. Вы уверены, что скриншот точен?
Ответ №1:
Просто :
fhandle = open('legalcode.txt')
for line in fhandle:
line = line.replace('n', '').replace('r', '')
line = line.strip()
print(repr(line))
hold = input()
Комментарии:
1. Да, я только что добавил ссылку на GitHub к исходному сообщению. Пожалуйста, дайте мне знать, если у вас возникнут какие-либо проблемы с доступом, поскольку я никогда раньше не использовал GH.
Ответ №2:
Попробуйте это 🙂
fhandle = open('legalcode.txt')
for line in fhandle:
if not line.strip():
continue
print(line.strip())
Или
fhandle = open('legalcode.txt')
lines=[l.strip() for l in fhandle.readlines() if l.strip()]
for l in lines:
print(l)
Комментарии:
1. Все еще получаю пустые строки с этим. 🙁
2. Попробовал ваш 2-й вариант также после редактирования, проблема остается.
3. Хм. Я проверил этот код на вашем примере) Я думаю, что на вашей платформе (например, windows?) Некоторые символы не были удалены методом strip. давайте проверим это с помощью этого кода « fhandle = open(‘legalcode.txt ‘) для строки в fhandle: если line.strip(): продолжить печать([ord(c) для c в строке]) « Этот код выведет целое число, представляющее оставшиеся символы.
4. Я только что обновил исходное сообщение с вашей рекомендацией. Я запустил ваш код [ord] сам по себе, и он вернулся без пробелов, но при совместном запуске он по-прежнему показывает пробелы, но без привязки к пробелу…