Conversión de cadenas para que parezca una lista de Python

Conversión de cadenas para que parezca una lista de Python

Tengo una cadena como 'cadena1,cadena2,cadena3'

Quiero convertir lo mismo a ["string1","string2","string3"]

Intenté usar

sed 's/\(,\)/"\1"/g'

pero esta regresandostring1","string2","string3

Respuesta1

Como ya puedes insertar comillas alrededor de las comas, simplemente añade ["y "]al principio y al final:

sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'

Ejemplo:

$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]

Respuesta2

Aquí hay una solución bash pura:

$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]

Debido a que este enfoque no requiere utilidades externas ni subprocesos, debería ser rápido.

Cómo funciona

Usamos bashsustitución de patronespara reemplazar todas las comas con ",". Debido a que "es un carácter activo en el shell, debemos escaparlo en el comando:

$ echo ${str//,/\",\"}
string1","string2","string3

El último paso es agregar ["al principio y "]al final de la cadena. De este modo:

$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]

información relacionada