una separar lista funcion elementos convertir concatenar como caracteres cadena arreglo python

separar - lista de caracteres python



Convirtiendo una lista en una cadena (8)

De las preguntas frecuentes de programación de Python para Python 3.6.4:

¿Cuál es la forma más eficiente de concatenar muchas cadenas juntas? str objetos str y bytes son inmutables, por lo tanto, la concatenación de muchas cadenas es ineficiente ya que cada concatenación crea un nuevo objeto. En el caso general, el costo total del tiempo de ejecución es cuadrático en la longitud total de la cadena.

Para acumular muchos objetos str, la expresión recomendada es colocarlos en una lista y llamar a str.join() al final:

chunks = [] for s in my_strings: chunks.append(s) result = ''''.join(chunks)

(otro modismo razonablemente eficiente es usar io.StringIO )

Para acumular muchos objetos de bytes, la expresión recomendada es extender un objeto bytearray usando una concatenación in situ (el operador += ):

result = bytearray() for b in my_bytes_objects: result += b

He extraído algunos datos de un archivo y quiero escribirlos en un segundo archivo. Pero mi programa está devolviendo el error:

sequence item 1: expected string, list found

Esto parece estar sucediendo porque write() quiere una cadena pero está recibiendo una lista.

Entonces, con respecto a este código, ¿cómo puedo convertir el buffer la lista en una cadena para poder guardar el contenido del buffer en file2 ?

file = open(''file1.txt'',''r'') file2 = open(''file2.txt'',''w'') buffer = [] rec = file.readlines() for line in rec : field = line.split() term1 = field[0] buffer.append(term1) term2 = field[1] buffer.append[term2] file2.write(buffer) # <== error file.close() file2.close()


Método 1:

import functools file2.write(functools.reduce((lambda x,y:x+y), buffer))

Método 2:

import functools, operator file2.write(functools.reduce(operator.add, buffer))

Método 3:

file2.write(''''.join(buffer))


Prueba str.join :

file2.write('' ''.join(buffer))

La documentación dice:

Devuelve una cadena que es la concatenación de las cadenas en iterable iterable. El separador entre elementos es la cadena que proporciona este método.


# it handy if it used for output list list = [1, 2, 3] stringRepr = str(list) # print(stringRepr) # ''[1, 2, 3]''


''''.join(buffer)


buffer=[''a'',''b'',''c''] obj=str(buffer) obj[1:len(obj)-1]

dará "''a'', ''b'', ''c''" como salida


file2.write( str(buffer) )

Explicación: str(anything) convertirá cualquier objeto de python en su representación de cadena. Similar a la salida que obtienes si print(anything) , pero como una cadena.

NOTA: Probablemente, esto no es lo que desea OP, ya que no tiene control sobre cómo se concatenan los elementos del buffer , lo pondrá , entre cada uno, pero puede ser útil para otra persona.


file2.write('',''.join(buffer))