Gå til innhold

[Løst] Lese fil med æøå riktig


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...