Tentando descobrir como escrever um ciclo if para verificar se uma linha está vazia.
O arquivo tem muitas strings, e uma delas é uma linha em branco para separar das outras instruções (não um ""
; é um retorno de carro seguido por outro retorno de carro, eu acho)
new statement
asdasdasd
asdasdasdasd
new statement
asdasdasdasd
asdasdasdasd
Visto que estou usando o módulo de entrada de arquivo, há uma maneira de verificar se uma linha está vazia?
Usar este código parece funcionar, obrigado a todos!
for line in x:
if line == '\n':
print "found an end of line"
x.close()
if line in ['\n']
, deve substituí-lo porif line == '\n'
.os.linesep
vez de['\n', '\r\n']
?Eu uso o código a seguir para testar a linha vazia com ou sem espaços em branco.
if len(line.strip()) == 0 : # do something with empty line
fonte
line.strip() == ''
Ou, se você não quiser "engolir" linhas que consistem em espaços:
line in ('\n', '\r\n')
fonte
\r\n
terminações de linha no estilo do Windows (CRLF)\n
, entãoline == '\n'
é melhor. Você provavelmente deveria tentar novamente e descobrir qual era o seu problema.\r\n
se você não está usandomode='rU'
(2) Pegue uma pista:print repr(line)
e se isso não fornecer uma pista, diga-nos exatamente o que "não funciona" significa para você.Você deve abrir arquivos de texto usando
rU
novas linhas para que sejam transformadas corretamente, consulte http://docs.python.org/library/functions.html#open . Dessa forma, não há necessidade de verificar\r\n
.fonte
U
argumento não é compatível com python3.Acho que é mais robusto usar expressões regulares:
import re for i, line in enumerate(content): print line if not (re.match('\r?\n', line)) else pass
Isso corresponderia no Windows / unix. Além disso, se você não tiver certeza sobre as linhas que contêm apenas caracteres de espaço, você pode usar
'\s*\r?\n'
como expressãofonte