Así que estoy creando un programa que toma un archivo de texto, lo divide en palabras y luego escribe la lista en un nuevo archivo de texto.
El problema que tengo es que necesito que las cadenas de la lista estén entre comillas dobles, no entre comillas simples.
Por ejemplo
Obtengo este ['dog','cat','fish'] cuando quiero este ["dog","cat","fish"]
Aquí está mi código
with open('input.txt') as f: file = f.readlines() nonewline = [] for x in file: nonewline.append(x[:-1]) words = [] for x in nonewline: words = words + x.split() textfile = open('output.txt','w') textfile.write(str(words))Soy nuevo en python y no he encontrado nada al respecto. ¿Alguien sabe como resolver esto?
[Editar: olvidé mencionar que estaba usando la salida en un proyecto de arduino que requería que la lista tuviera comillas dobles].
No puede cambiar cómo funciona str para list .
¿Qué tal usar el formato JSON que usa " para cadenas.
>>> animals = ['dog','cat','fish'] >>> print(str(animals)) ['dog', 'cat', 'fish'] >>> import json >>> print(json.dumps(animals)) ["dog", "cat", "fish"] import json ... textfile.write(json.dumps(words))Lo más probable es que desee reemplazar las comillas simples con comillas dobles en su salida reemplazándolas:
str(words).replace("'", '"') También puede extender el tipo str de Python y envolver sus cadenas con el nuevo tipo cambiando el __repr__() para usar comillas dobles en lugar de simples. Sin embargo, es mejor ser más simple y más explícito con el código anterior.
class str2(str): def __repr__(self): # Allow str.__repr__() to do the hard work, then # remove the outer two characters, single quotes, # and replace them with double quotes. return ''.join(('"', super().__repr__()[1:-1], '"')) >>> "apple" 'apple' >>> class str2(str): ... def __repr__(self): ... return ''.join(('"', super().__repr__()[1:-1], '"')) ... >>> str2("apple") "apple" >>> str2('apple') "apple"En Python, las comillas dobles y simples son iguales. No hay diferencia entre ellos. Y no tiene sentido reemplazar una comilla simple con una comilla doble y viceversa:
2.4.1. Literales de cadena y bytes
... En lenguaje sencillo: ambos tipos de literales pueden incluirse entre comillas simples (') o comillas dobles ("). También pueden incluirse en grupos coincidentes de tres comillas simples o dobles (generalmente se denominan triples). -cadenas entrecomilladas). El carácter de barra invertida () se usa para escapar de caracteres que de otro modo tendrían un significado especial, como una nueva línea, la barra invertida en sí misma o el carácter de comillas...
"El problema que tengo es que necesito que las cadenas de la lista estén entre comillas dobles, no entre comillas simples". - Luego, debe hacer que su programa acepte comillas simples, sin tratar de reemplazar las comillas simples con comillas dobles.