2013-08-17 2 views
-2

вот мой код:Python конвертировать gibbrish в Hebrew

# -*- coding: utf-8-*- 
array=["à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ","ÿ"] 
array1=["א","ב","ג","ד","ה","ו","ז","ח","ט","י","ך","כ","ל","ם","מ","ן","נ","ס","ע","ף","פ","ץ","צ","ק","ר","ש","ת"] 
str="áï éäåãä" 
message="" 
for i in range(0,len(str)): 
    s=str[i] 
    index=-1 
    for j in range(0,len(array)): 
     if(array[j]==s): 
      index=j 
      break 
    if(index!=-1): 
    message+=array1[index] 
    print array1[index] 
print message 

ошибка:

SyntaxError: EOL while scanning string literal 

в строке 2

У меня есть текстовый файл в древнееврейском, но он всегда отображается в gibbrish, независимо от того, что кодировка. это программа python для преобразования ее на иврит. исходный файл находится в IS0-8859-1

+4

Этот вопрос не соответствует теме, потому что речь идет о поиске единственной опечатки. – geoffspear

+0

Попробуйте простые тики '' ' – tuergeist

ответ

3

Как предлагает @Martijn, правильное декодирование исходного файла было бы лучшим решением. Если ваш файл иврит, но отображает array символов, он, вероятно, отображается как latin1 или cp1252. cp1255 выглядит как близкий матч. Возможно, ваш array1 не совсем прав. Также обратите внимание на строки Iterable, так что вы можете упростить массивы:

# coding: utf8 
array = u'àáâãäåæçèéêëìíîïðñóôõöøùúûüýþÿ' 
array1 = u'אבגדהוזחטיךכלםמןנסעףפץצקרשת' 
print(array) 
print(array1) 
print(array.encode('cp1252').decode('cp1255',errors='replace')) 

Последняя строка выше переворачивает «неправильное» кодирование и декодирование его cp1255 (на иврите кодирования) вместо этого. Выход:

àáâãäåæçèéêëìíîïðñóôõöøùúûüýþÿ 
אבגדהוזחטיךכלםמןנסעףפץצקרשת 
אבגדהוזחטיךכלםמןנסףפץצרשת��‎‏� 

Это не идеальный матч, но достаточно того, что я думаю, что ваш исходный файл был зашифрован с cp1255 близко.

+0

http://s16.postimg.org/a1b560dat/error.jpg вот результат @Mark Tolonen – itai12345

+0

Я не думаю, что ваш редактор настроен правильно. Он не может даже 'print (array)' и считает, что выходная кодировка - 'ascii'. Я использую PythonWin, который поставляется с расширениями [pywin32] (http://sourceforge.net/projects/pywin32/). Его выходное окно настроено для UTF-8. –

+0

Я использую SPE Python (python 2.7) на ubuntu 12.04. но почему бы это http://pastebin.com/1Ym2wgyz работать? спасибо @Mark Tolonen – itai12345

4

Вы использовали ', где должен был использовать ":

'ÿ" 

для последней записи в:

array=["à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ó","ô","õ","ö","ø","ù","ú","û","ü","ý","þ",'ÿ"] 

Сделать эту единственную процитировать двойной.

Что касается вашей программы перевода; это звучит так, как будто ваша кодировка файла неверна или неправильно декодирована. Возможно, вы должны выяснить правильную кодировку вместо этого, а не слепо заменить Latin-1 байты на последовательности UTF-8 для ивритских кодовых точек?

Если вы хотите использовать модуль codec, чтобы открыть файл с правильным кодеком и декодировать его в Юникод, вы, скорее всего, найдете, что данные правильно закодированы в любом случае.

Я сильно призываю вас учиться на Unicode, кодеков и Python, прежде чем продолжить:

+0

update: файл, который я хочу перевести, находится в западной кодировке 8859-1. Я пытаюсь изменить его на разные ивритские кодировки, и он все еще не работает. когда я вставляю его в [link] (http://gibberish.co.il/gibberish.html), он работает.однако, мне нужно, чтобы он работал и для больших файлов. @Martijn Pieters – itai12345

+0

У меня есть ** нет ** идея, что эта ссылка делает; извините, я не могу читать иврит. Если вы делаете * have * для перевода текста, используйте 'unicode.translate()' с таблицей (координаты сопоставления словаря (целые числа) с другими кодовыми точками). –

+0

http://tinypic.com/view.php?pic=bgtn9u&s=5, но забудьте об этом сайте. у вас не возникло проблемы - он сохранил его в неправильной кодировке, и теперь вам нужно написать скрипт, чтобы исправить его. Я написал питон, который сделал это сейчас http://pastebin.com/1Ym2wgyz, и он работает. жаль, что я не дал понять, что невозможно изменить кодировку файла, чтобы это было нормально @Martijn Pieters – itai12345