Código:

with open ("Test1_Votes.txt", 'r'):
    f = open("Test1_Votes.txt")
    lines = f.readlines()
    print(lines[0])
    print(lines[1])
    all_lines = []

    lines = lines.rstrip("\n") #does not work
    for line in lines:
        #in here
        all_lines.append(line)
    print(all_lines)

En este momento imprime resultados como: ['1,2,3,0,0 \ n', ...] Me gustaría que muestre [[1, 2, 3, 0, 0], ...]

Muestra de archivo:

1,2,3,0,0

1,3,2,0,0

2,3,1,0,0

3,0,1,2,0

3,0,1,0,2

Los ceros deben mantenerse allí y no hay una línea en blanco entre cada línea en el .txt

¿Alguna sugerencia / respuesta?

Gracias de antemano

0
TIC-FLY 27 oct. 2017 a las 19:24

5 respuestas

La mejor respuesta

Actualmente está eliminando el nuevo carácter de línea solo de la última línea del archivo, si corresponde. Debes despojar de cada línea en su lugar:

with open ("Test1_Votes.txt") as f:
    all_lines = []
    for line in f: 
        line = line.rstrip("\n")                  # strip new line character
        lst = [int(x) for x in line.split(',')]   # split line and cast to int
        all_lines.append(lst)

Por supuesto, puede poner toda la lógica en una lista de comprensión:

with open ("Test1_Votes.txt") as f:
    all_lines = [[int(x) for x in l.rstrip("\n").split(',')] for l in f]
3
Moses Koledoye 27 oct. 2017 a las 16:32

Tiene algunos problemas menores en su código. El contexto with abre el archivo, por lo que no necesita la segunda instrucción open. lines es una lista de cada línea en su archivo, incluidos los caracteres '\n' finales, para eliminarlos puede iterar sobre la lista lines y quitar los nuevos caracteres de línea.

with open("Test1_Votes.txt", 'r') as f:
    lines = [line.rstrip() for line in f.readlines()]
    print(lines[0])
    print(lines[1])
5
glglgl 27 oct. 2017 a las 16:29

Un trazador de líneas podría verse así:

all_lines = list([int(x) for x in line.replace('\n', '').split(',')] for line in open ("filepath", 'r').readlines())
print(all_lines)
0
Maor Veitsman 27 oct. 2017 a las 16:33

Use re.split() en lugar de readlines():

import re

your_file='abc def\nghi jkl\nmno pqr...'
all_lines=re.split('\n', your_file)
0
Sim Son 27 oct. 2017 a las 16:28

Probar esto

fle=open("infile.txt", "r")
lst=fle.readlines()
lst=[i.strip() for i in lst]
for i in lst:

    print i
print lst
1
Sandeep Lade 27 oct. 2017 a las 16:32