name - Tira de Python con / n
subplot python title (7)
¿Qué hay de usar un patrón de regex python?
import re
f = open(''test.txt'', ''r'')
strings = re.findall(r"/S+", f.read())
Y para su caso de line.strip() no funcionará porque Python elimina solo los caracteres line.strip() y finales
De line.strip() : devuelve una copia de la cadena con los caracteres iniciales y finales eliminados . Si se omite caracteres o Ninguno, se eliminan los caracteres de espacio en blanco. Si se da y no None, los caracteres deben ser una cadena; los caracteres de la cadena se eliminarán de los dos extremos de la cadena en la que se invoca este método.
Esta pregunta ya tiene una respuesta aquí:
Este es mi problema.
Intento leer un archivo de texto y luego convertir las líneas en flotantes. El archivo de texto tiene /n
y /t
en él aunque no sé cómo deshacerme de él.
Intenté usar line.strip()
pero no se quitó y recibí un error cuando quería convertir el material en flotadores. Luego probé line.strip("/n")
pero tampoco funcionó. Mi programa funciona bien cuando saco /t
y /n
del archivo de texto, pero es parte de la tarea hacer que funcione con ellos.
Realmente no sé por qué esto no está funcionando. Gracias por cualquier ayuda.
A menudo, dependiendo de la forma en que lea las líneas, para deshacerse de / n de myline, puede tomar myline [: - 1] ya que / n es el último carácter de myline.
Para ''/ t'' puede usar replace () o strip ()
Debería poder usar line.strip(''/n'')
y line.strip(''/t'')
. Pero estos no modifican la variable de line
... simplemente devuelven la cadena con /n
/t
stripped. Entonces tendrás que hacer algo como
line = line.strip(''/n'')
line = line.strip(''/t'')
Eso debería funcionar para eliminar desde el principio y el final. Si tiene /n
y /t
en el medio de la cadena, debe hacer
line = line.replace(''/n'','''')
line = line.replace(''/t'','''')
para reemplazar el /n
y /t
con la nada.
El método strip()
elimina el espacio en blanco de forma predeterminada, por lo que no es necesario llamarlo con parámetros como ''/ t'' o ''/ n''. Sin embargo, las cadenas en Python son inmutables y no se pueden modificar, es decir, la llamada line.strip()
no cambiará el objeto de line
. El resultado es una nueva cadena que es devuelta por la llamada.
Como ya se mencionó, sería útil que publicara un ejemplo de su archivo de entrada. Si hay más de un número en cada línea, strip()
no es la función a usar. En su lugar, debe usar split()
, que también es un método de cadena.
Para concluir, suponiendo que cada línea contiene varios flotadores separados por espacios en blanco, y que desea crear una lista de todos los números, puede intentar lo siguiente:
floats = []
with open(filename) as f:
for line in f:
floats.extend([float(number) for number in line.split()])
Puedes usar:
mylist = []
# Assuming that you have loaded data into a lines variable.
for line in lines:
mylist.append(line.strip().split(''/t'')
para obtener una lista de Python con solo los valores de campo para todas las líneas de datos.
Si está tratando de convertir líneas de flotantes separadas por caracteres de tabulación, simplemente float(line)
intentará convertir toda la línea en una flotación, que fallará si hay más de una. Usar strip
para deshacerse de los espacios en blanco iniciales y finales no va a ayudar a ese problema fundamental.
¿Quizás necesites split
cada línea en pedazos y hacer algo con cada pieza?
la biblioteca pythons csv es buena para esto.
http://docs.python.org/library/csv.html
CSV = valores separados por comas, pero si configura el delimitador = / t, entonces también funciona para valores separados por tabulaciones.