2014-12-21 3 views
0

Я пытаюсь открыть текстовый файл на французском языке с помощью Python 2.7. Я использовал командуОткрыть текстовый файл с акцентами в python

f=open('textfr','r') 

, но когда я использую

f.read() 

Я теряю акцентированные символы: Я получаю u"J'\xc3\xa9tais \xc3\xa0 Париж вместо J'étais à Париж, и т.д ..

когда в Linux терминала, я

file -i textfr 

Я получаю

charset=utf-8 

, так что я не понимаю ...

+0

Вы пробовали распечатать f.read()? –

ответ

2

Вы должны указать кодировку.

f = io.open('textfr', 'r', encoding='utf-8') 
+0

спасибо, но это не меняет результат ... – Mostafa

+0

Да, это так. Он должен, по определению. –

+0

@Mustafa: Когда вы говорите: «Я получаю« J »\ xc3 \ xa9tais \ xc3 \ xa0 Paris'», вы «получаете» его, используя инструкцию 'print' к терминалу или оценивая содержимое переменной в интерактивной сессии Python? Если вы используете терминал, как он настроен? (для хостов типа * nix, какой у вас установлен параметр 'TERM' env var) –

0

использование codecs вместо стандартного open так

import codecs 
codecs.open('textfr','r', 'utf-8') 
+0

спасибо, но он не работает ... так что, возможно, проблема в другом месте – Mostafa

0

По умолчанию файлы чтения/записи, используя кодировку текста в системе по умолчанию, так как можно найти в sys.getdefaultencoding(). На большинстве машин установлено значение utf-8. но некоторые из таких машин, как ваша не использует utf-8 вы можете использовать правильную кодировку для вашего файла, или использовать utf-8, который является универсальной кодировки:

в Python 3:

with open('somefile.txt', 'rt', encoding='utf-8') as f: 
     #do stuff 

в Python 2 вы можете использование codecs.open():

import codecs 
f=codecs.open ('somefile.txt', 'rt', encoding='utf-8').read() 
+1

'open()' в 2.x не имеет аргумента 'encoding'. –

+0

@ IgnacioVazquez-Abrams о, да, я добавлю это, чтобы ответить – Kasramvd

Смежные вопросы