Ir para conteúdo
Fórum Script Brasil
  • 0

Quebra de linha de arquivo input não é \n, como descubro qual é?


Rodolfo Lopes

Pergunta

Bom dia!

Eu estou tendo um problema com um programa aqui:
 

import sys

def search():

    filetest = "C:/Python33/exemplo.txt" #demanded codes file

    #read the demanded codes file
    ftest = open(filetest, 'r')
    Xtest = ftest.read()

    #split the demanded codes file contents by line
    demanded = str.split(Xtest, '\n')

O problema é que o arquivo exemplo.txt é uma lista com mais de mil linhas, MAS as linhas aparentemente não são definidas nem por "\n" nem por "\r", e eu não consigo descobrir como elas são definidas.

Eu sei que elas não são definidas por "\n" porque o arquivo de saída sai bugado, mas se eu entro no arquivo "exemplo.txt" pelo bloco de notas, apago todas as linhas e coloco elas de novo no arquivo usando o "enter", o programa roda normalmente. Também tentei trocar "\n" por "\r" no código, mas continuou bugando.

Como eu faço para saber o tipo de line break ou new line usado no arquivo "exemplo.txt"? Eu também não posso alterar o arquivo de entrada manualmente porque ele sempre varia, e geralmente tem mais de 1000 linhas.

O arquivo "exemplo.txt" é o seguinte:

https://www.4shared.com/office/0d4dB2fzei/exemplo.html

 

Valeu pessoal \o

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Já tentou usar .readlines() ao invés de .read()?

Quando você usa .read() o programa lê tudo como uma string só, já quando você usa o .readlines(), ele retorna uma lista sendo que cada elemento dessa lista é uma linha do arquivo. Depois, se você precisar tirar o \n, pode cortar as strings dentro da lista.

 

Link para o comentário
Compartilhar em outros sites

  • 0

O objeto arquivo (ftest) já é iterável, e quando iterado sobre retorna uma linha a cada iteração, logo não é necessário usar read ou readlines.

Logo teste isso:

def search():

    filetest = "C:/Python33/exemplo.txt" #demanded codes file

    #read the demanded codes file
    ftest = open(filetest, 'r')
    
    for i, line in enumerate(ftest):
        print(i, line)

A saída na tela deveria ser o número da linha seguido do texto da linha:

 

Por exemplo para exemplo.txt:

abcde
ferd
sfdasf
gfdgrt
gfdg

A saída será:

0 abcde

1 ferd

2 sfdasf

3 gfdgrt

4 gfdg

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...