gpt4 book ai didi

python - 当我在 Python 中打印 utf-8 文件中的文本时,为什么看不到希伯来字符?

转载 作者:行者123 更新时间:2023-11-28 20:52:21 24 4
gpt4 key购买 nike

我正在尝试从文本文件中读取希伯来语:

def task1():
f = open('C:\\Users\\royi\\Desktop\\final project\\corpus-haaretz.txt', 'r',"utf-8")
print 'success'
return f

a = task1()

当我阅读它时,它向我展示了这一点:

'[\xee\xe0\xee\xf8 \xee\xf2\xf8\xeb\xfa \xf9\xec \xe4\xf0\xe9\xe5-\xe9\xe5\xf8\xf7 \xe8\xe9\xe9\xee\xf1: \xf2\xec \xe1\xe9\xfa \xe4\xee\xf9\xf4\xe8 \xec\xe1\xe8\xec \xe0\xfa \xe7\xe5\xf7 \xe4\xe7\xf8\xed, \xec\xe8\xe5\xe1\xfa \xe9\xf9\xf8\xe0\xec \xee\xe0\xfa \xf0\xe9\xe5 

还有更多。

如何阅读?

最佳答案

你像这样打印它:

print task1().encode('your terminal encoding here')

您必须确保您的终端能够显示希伯来语字符。例如,在安装了希伯来语言环境的完整 utf-8 Linux distrib 下:

print task1().encode('utf-8')

小心打开:

  • 对于 python 2.7,您没有编码参数。使用 codecs 模块。
  • 对于 python 3+,编码参数是第四个,而不是像你那样的第三个。您的意思可能是 open(path, 'r', encoding='utf-8')。您甚至可以省略 'r'

那么为什么要使用 encode 呢?

好吧,当您读取文件并告诉 Python 编码时,它会返回一个 unicode 对象,而不是字符串对象。例如在我的系统上:

>>> import codecs
>>> content = codecs.open('/etc/fstab', encoding='utf-8').read()
>>> type(content)
<type 'unicode'>
>>> type('')
<type 'str'>
>>> type(u'')
<type 'unicode'>

如果你想让它成为一个可打印的字符串,如果它包含非 ascii 字符,你需要将它编码回一个字符串:

>>> type(content.encode('utf-8'))
<type 'str'>

我们使用 encode 因为在这里我们谈论的是一个或多或少通用的文本对象(unicode 是您可以通过文本操作获得的通用文本对象),并且您将其转换(编码)为特定的表示形式(utf-8).

我们需要这种特定的表示形式,因为您的系统不知道 Python 内部,如果您不指定编码,则只能打印 ascii 字符。因此,当您输出时,您将专门编码为您的系统可以理解的编码。对我来说幸运的是'utf-8',所以很容易。如果您使用的是 Windows,它可能会变得棘手。

关于python - 当我在 Python 中打印 utf-8 文件中的文本时,为什么看不到希伯来字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com