separar - reemplazar caracteres en python
Romper cadena en la lista de caracteres en Python (8)
Entonces, lo que quiero hacer es esencialmente chupar una línea de txt de un archivo .txt, luego asignar los caracteres a una lista, y luego crear una lista de todos los caracteres separados en una lista.
Entonces una lista de listas.
Por el momento, lo he intentado:
fO = open(filename, ''rU'')
fL = fO.readlines()
y eso es todo lo que hago. No sé cómo extraer los caracteres individuales y asignarlos a una nueva lista.
Quiero hacer algo como:
fL = ''FHFF HHXH XXXX HFHX''
^^^ para que sea la línea que obtuve del archivo .txt.
Y luego conviértalo en esto:
[''F'', ''H'', ''F'', ''F'', ''H'' ...]
^^^ y esa es la nueva lista, con cada personaje por sí mismo.
En python, muchas cosas son iterables, incluidos los archivos y las cadenas. La iteración sobre un manejador de archivos le proporciona una lista de todas las líneas en ese archivo. Al iterar sobre una cadena, aparece una lista de todos los caracteres de esa cadena.
charsFromFile = []
filePath = r''path/to/your/file.txt'' #the r before the string lets us use backslashes
for line in open(filePath):
for char in line:
charsFromFile.append(char)
#apply code on each character here
o si quieres un trazador de líneas
#the [0] at the end is the line you want to grab.
#the [0] can be removed to grab all lines
[list(a) for a in list(open(''test.py''))][0]
.
.
Editar: como lo menciona, puede usar itertools.chain.from_iterable
Su método es mejor, a menos que desee la capacidad de especificar qué líneas capturar la list(itertools.chain.from_iterable(open(filename, ''rU)))
Sin embargo, esto requiere que uno esté familiarizado con las herramientas de iteración y, como resultado, pierde cierta reabilidad.
Si solo quieres iterar sobre los caracteres y no te importa almacenar una lista, entonces usaría los ciclos for forzados. Este método también es el más legible.
Entonces, para agregar la cadena de hello
a una lista como caracteres individuales, intente esto:
newlist = []
newlist[:0] = ''hello''
print (newlist)
[''h'',''e'',''l'',''l'',''o'']
Sin embargo, es más fácil hacer esto:
splitlist = list(newlist)
print (splitlist)
Estoy un poco tarde, parece ser, pero ...
a=''hello''
print list(a)
# [''h'',''e'',''l'',''l'', ''o'']
Las cadenas son iterables (como una lista).
Estoy interpretando que realmente quieres algo como:
fd = open(filename,''rU'')
chars = []
for line in fd:
for c in line:
chars.append(c)
o
fd = open(filename, ''rU'')
chars = []
for line in fd:
chars.extend(line)
o
chars = []
with open(filename, ''rU'') as fd:
map(chars.extend, fd)
chars contendría todos los caracteres en el archivo.
O use una lista de comprensión de lujo, que se supone que es "computacionalmente más eficiente", cuando se trabaja con archivos / listas muy grandes
fd = open(filename,''r'')
chars = [c for line in fd for c in line if c is not " "]
fd.close()
Por cierto: la respuesta que se aceptó no tiene en cuenta los espacios en blanco ...
Puedes hacer esto usando la list :
fNewList=list(fL);
Tenga en cuenta que cualquier espacio en la línea se incluirá en esta lista, según mi leal saber y entender.
a=''hello world''
map(lambda x:x, a)
[''Hola Mundo'']
Una forma fácil es usar la función "mapa ()".
fO = open(filename, ''rU'')
lst = list(fO.read())