Papegøye Skrevet 7. desember 2015 Del Skrevet 7. desember 2015 Jeg har en .csv-fil jeg har lastet ned fra internett, som jeg skal lese i Python. Dette gjør jeg med open(filnavn, "r") Når jeg printer strenger fra filen som inneholder æåø får jeg opp for eksempel "�l" i stedet for "Øl". Jeg har definert # -*- coding: utf-8 -*- øverst i filen allerede. Dersom jeg skriver print "Øl" fungerer det helt fint, så det er altså lesingen fra filen som det er noe galt med. Noen tips? Lenke til kommentar
xaco Skrevet 7. desember 2015 Del Skrevet 7. desember 2015 Mest sannsynlig er den filen enkodet med iso-8859-1 og ikke utf-8. Det er et par ting du kan gjøre. 1. Prøv å finne ut hva slags enkoding filen har(det finnes flere måter å gjøre det på) 2. Om du bare må lese den filen Prøv å spesifiser iso8859-1 eller iso8859-15 når du leser filen. Om du bruker python3 så er encoding en parameter i open du kan sette. Lenke til kommentar
Papegøye Skrevet 7. desember 2015 Forfatter Del Skrevet 7. desember 2015 Bruker Python 2.7 Usikker på hvordan jeg skal finne enkodingen til filen. Prøvde å bruke codecs-modulen med følgende kode: import codecs infile = codecs.open(filnavn, "r", encoding="latin1") og da får jeg inn æøå. Men da dukker opp et nytt rart problem, for når jeg kjører .split() på linjene fra filen, endres liten ø til "\xf8", og hver streng i listen får en u foran seg Lenke til kommentar
Papegøye Skrevet 7. desember 2015 Forfatter Del Skrevet 7. desember 2015 Løste problemet ved å gjøre følgende: 1. Fant enkoding ved å kjøre kommandoen "file <filnavn -I" i terminal 2. Brukte følgende kode for å hente inn filen: infile = codecs.open(filename, "r", encoding="iso-8859-1") 3. Konverterte hver enkelt linje til utf-8 ved å bruke line.encode("utf-8") Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå