Пытаюсь понять, как написать цикл if, чтобы проверить, пуста ли строка.
В файле много строк, и одна из них - это пустая строка, которая отделяется от других операторов (не ""
; это возврат каретки, за которым следует другой возврат каретки, я думаю)
new statement
asdasdasd
asdasdasdasd
new statement
asdasdasdasd
asdasdasdasd
Поскольку я использую модуль ввода файла, есть ли способ проверить, пуста ли строка?
Используя этот код, похоже, он работает, спасибо всем!
for line in x:
if line == '\n':
print "found an end of line"
x.close()
if line in ['\n']
, замените его наif line == '\n'
.os.linesep
вместо['\n', '\r\n']
?Я использую следующий код для проверки пустой строки с пробелами или без них.
if len(line.strip()) == 0 : # do something with empty line
источник
line.strip() == ''
Или, если вы не хотите «съедать» строки, состоящие из пробелов:
line in ('\n', '\r\n')
источник
\r\n
чтобы учесть окончание строк в стиле Windows (CRLF)\n
, тоline == '\n'
лучше. Возможно, вам стоит попробовать еще раз и выяснить, в чем была ваша проблема.\r\n
если вы не используетеmode='rU'
(2) Получите подсказку:print repr(line)
и если это не дает подсказки, скажите нам, что именно «не работает» значит для вас.Вы должны открывать текстовые файлы, используя
rU
для правильного преобразования новых строк, см. Http://docs.python.org/library/functions.html#open . Таким образом, нет необходимости проверять\r\n
.источник
U
аргумент не поддерживается в python3.Я думаю, что более надежно использовать регулярные выражения:
import re for i, line in enumerate(content): print line if not (re.match('\r?\n', line)) else pass
Это будет соответствовать Windows / unix. Кроме того, если вы не уверены в строках, содержащих только пробел, вы можете использовать
'\s*\r?\n'
выражениеисточник