【问题标题】:Python convert gibbrish to hebrew [closed]Python将乱码转换为希伯来语[关闭]
【发布时间】:2013-08-17 22:01:15
【问题描述】:

这是我的代码:

# -*- 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 行

我有一个希伯来语文本文件,但无论编码是什么,它总是以乱码显示。这是一个将其转换为希伯来语的 python 程序。原始文件在 IS0-8859-1

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于查找一个错字。

标签: python unicode character-encoding hebrew


【解决方案1】:

正如@Martijn 所建议的,正确解码您的原始文件将是一个更好的解决方案。如果您的文件是希伯来语但显示array 字符,则它可能显示为latin1cp1252 编码。 cp1255 看起来很接近。也许您的array1 不太正确。另请注意,字符串是可迭代的,因此您可以简化数组:

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

上面的最后一行反转了“不正确”的编码,并改为使用cp1255(希伯来语编码)对其进行解码。输出:

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

这不是一个完美的匹配,但足够接近,我认为您的原始文件是用 cp1255 编码的。

【讨论】:

  • s16.postimg.org/a1b560dat/error.jpg 这是结果@Mark Tolonen
  • 我认为您的编辑器配置不正确。它甚至不能print(array) 并认为输出编码是ascii。我使用 PythonWin,它带有 pywin32 扩展。其输出窗口配置为 UTF-8。
  • 我在 ubuntu 12.04 上使用 SPE Python(python 2.7)。但那为什么pastebin.com/1Ym2wgyz 会起作用呢?谢谢@Mark Tolonen
  • 您正在向终端发送原始的按编码的 UTF-8 字节。所以你有一个 UTF-8 终端,但环境配置不正确。如果是这样,上面的print(array) 就可以了。检查 LANG 环境变量。
【解决方案2】:

你使用了',而你应该使用"

'ÿ"

最后一个条目:

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

把那个单引号变成双引号。

至于你的翻译程序;听起来好像您的文件编码不正确,或者解码不正确。也许您应该找出正确的编码,而不是盲目地将拉丁语 1 字节替换为希伯来语代码点的 UTF-8 序列?

如果您使用codec 模块以正确的编解码器打开文件并解码为Unicode,您很可能会发现数据已正确编码。

强烈建议您在继续之前学习 Unicode、编解码器和 Python:

【讨论】:

  • 更新:我要翻译的文件是8859-1西文字符集。我尝试将其更改为不同的希伯来字符集,但仍然无法正常工作。当我将其粘贴到 [link] (gibberish.co.il/gibberish.html) 中时,它可以工作。但是,我也需要它来处理大文件。 @Martijn Pieters
  • 知道该链接的作用;抱歉,我看不懂希伯来语。如果您确实必须翻译您的文本,请使用unicode.translate() 和表格(将序数(整数)映射到其他代码点的字典)。
  • tinypic.com/view.php?pic=bgtn9u&s=5 但忘了那个网站。你没有得到问题 - 它以错误的编码保存它,现在你要做的是编写一个脚本来修复它。我写了一个 python ,现在可以做到pastebin.com/1Ym2wgyz 并且它可以工作。抱歉,我没有说清楚不可能更改文件编码,这样就可以了@Martijn Pieters
猜你喜欢
  • 1970-01-01
  • 2021-08-13
  • 2011-11-22
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多