Miesje
Estoy tratando de leer un CSV archivo en Python (espía), pero sigo recibiendo un error. Mi código:
import csv
data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)
print(data)
Obtuve el siguiente error:
SyntaxError: (error Unicode) el códec ‘unicodeescape’ no puede decodificar bytes en la posición 2-3: escape truncado \UXXXXXXXXX
He intentado reemplazar \ con \ o con / y he intentado poner un r antes de “C..pero todas estas cosas no funcionaron.
aficionado a la tecnología
Este error ocurre porque está utilizando una cadena normal como ruta. Puede usar una de las tres soluciones siguientes para solucionar su problema:
1: Solo pon r
antes de su cadena normal. Convierte una cadena normal en una cadena sin procesar:
pandas.read_csv(r"C:\Users\DeePak\Desktop\myac.csv")
2:
pandas.read_csv("C:/Users/DeePak/Desktop/myac.csv")
3:
pandas.read_csv("C:\\Users\\DeePak\\Desktop\\myac.csv")
-
Me gusta la segunda opción, hace que la ruta sea portátil en Windows y Linux. Gracias por proteger Python la peculiaridad de Windows.
-Yu Shen
24 de abril de 2018 a las 16:15
-
Gracias hombre. La primera respuesta resolvió mi problema. Todo lo que hice fue agregar la r para hacer que mi cadena fuera cruda.
– Samuel Nde
26 de agosto de 2018 a las 7:23
-
En mi caso solo funcionó un \ anterior al primero: C:\\Users\DeePak\Desktop…
– Feri
26 de agosto de 2018 a las 11:54
-
esto parece ser un problema cuando la ruta del archivo es C, el uso de otras letras no dará problemas al usar el estilo de Windows “\”
– xgg
20 de noviembre de 2018 a las 15:29
-
Incluso con todas estas opciones, puede que no funcione. Verifique también los permisos de su carpeta y archivo si es de solo lectura. Tuve el mismo problema. Cambié lo mismo y funcionó.
– BigData-Gurú
15 de agosto de 2020 a las 18:34
thomasrutter
La primera barra invertida en su cadena se interpreta como un carácter especial. De hecho, debido a que va seguido de una “U”, se interpreta como el comienzo de un código Unicode. punto de código.
Para solucionar esto, debe escapar de las barras invertidas en la cadena. La forma directa de hacer esto es duplicando las barras invertidas:
data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
Si no desea escapar de las barras diagonales inversas en una cadena, y no tiene necesidad de códigos de escape o comillas en la cadena, puede usar una cadena “sin procesar”, usando “r” justo antes, como asi que:
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
-
cuando uso barras invertidas dobles, el programa dice que el archivo que quiero abrir no existe.
– Miesje
24 de mayo de 2016 a las 9:27
-
Eso suena prometedor, ya que significa que ahora considera que la cadena es válida.
– thomasrutter
24 de mayo de 2016 a las 11:49
-
Derecha. Entonces, el siguiente problema es que la ruta del archivo no existe. ¿Ha omitido una extensión de archivo, por ejemplo
vektis_agb_zorgverlener.txt
? El Explorador de Windows ocultará las extensiones de archivo de forma predeterminada porque es estúpido; puedes arreglalo aunque.– bobince
25 de mayo de 2016 a las 7:02
mohit solanki
solo puedes poner r
en frente de la cadena con su ruta real, que denota una cadena sin formato. Por ejemplo:
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
-
En aras de la integridad, esto elimina la capacidad de escapar de los caracteres, incluidas las comillas, dentro de la cadena, por lo que simplemente no se puede usar para cadenas que contienen comillas, pero es perfectamente apropiado aquí.
– thomasrutter
11 de febrero de 2020 a las 22:47
Ramineni Ravi Teja
Considéralo como una cadena en bruto. Solo como una respuesta simple, agregue r
antes de su ruta de Windows.
import csv
data = open(r"C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
data = csv.reader(data)
print(data)
Intente escribir la ruta del archivo como "C:\\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"
es decir, con doble barra invertida después de la unidad en lugar de "C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener"
-
funciona ! ¿podría decir por qué funciona la doble barra después de la unidad?
– ayat ullah sony
27 de septiembre de 2019 a las 9:42
Pedro Mortensen
Agregar r
antes de su cadena. Convierte una cadena normal en una cadena sin procesar.
-
funciona ! ¿podría decir por qué funciona la doble barra después de la unidad?
– ayat ullah sony
27 de septiembre de 2019 a las 9:42
Comunidad
según Literales de cadena:
Los literales de cadena se pueden encerrar dentro comillas simples (es decir
'...'
) o doble comillas (es decir"..."
). También se pueden encerrar en grupos coincidentes de tres comillas simples o dobles (generalmente se denominan cadenas entre comillas triples).El carácter de barra invertida (es decir,
\
) se utiliza para escapar de caracteres que, de otro modo, tendrían un significado especial, como una nueva línea, la barra invertida o el carácter de comillas. Los literales de cadena pueden tener opcionalmente el prefijo con una letrar
oR
. Tales cadenas se llaman cuerdas en bruto y use diferentes reglas para las secuencias de escape de barra invertida.En cadenas entre comillas triples, saltos de línea sin escape y cotizaciones están permitidos, excepto que el tres citas sin escape en una fila termina la cadena.
A menos que un
r
oR
prefijo está presente, las secuencias de escape en las cadenas se interpretan de acuerdo con reglas similares a las utilizadas por el estándar C.
Entonces, idealmente, debe reemplazar la línea:
data = open("C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener")
A cualquiera de los siguientes caracteres:
-
Usando crudo prefijo y comillas simples (es decir
'...'
):data = open(r'C:\Users\miche\Documents\school\jaar2\MIK\2.6\vektis_agb_zorgverlener')
-
Usando doble comillas (es decir
"..."
) y el carácter de barra invertida de escape (es decir,\
):data = open("C:\\Users\\miche\\Documents\\school\\jaar2\\MIK\\2.6\\vektis_agb_zorgverlener")
-
Usando doble comillas (es decir
"..."
) y el carácter de barra diagonal (es decir,/
):data = open("C:/Users/miche/Documents/school/jaar2/MIK/2.6/vektis_agb_zorgverlener")
-
No entiendo por qué estás distinguiendo entre comillas simples y dobles aquí. Python los procesa de forma idéntica.
– Encantador de serpientes
28 de abril de 2019 a las 14:26
¿Cómo no funcionaron sus soluciones alternativas? Esperaría una cadena sin procesar o una cadena con
/
‘s en lugar de `\`’s para que funcione bien.– Caballero negro
24 de mayo de 2016 a las 3:50
cuando uso barras invertidas dobles, el programa dice que el archivo que quiero abrir no existe.
– Miesje
24 de mayo de 2016 a las 10:19
Use la barra inclinada ‘\’ en lugar de la barra inclinada hacia atrás mientras especifica la ruta C:/Users/user/Videos cambiada a C:\Users\user\Videos
– Praveen Kumar C.
1 de diciembre de 2020 a las 20:45