【问题标题】:How can I read special characters from a file?如何从文件中读取特殊字符?
【发布时间】:2021-12-08 17:01:32
【问题描述】:

当我打开一个带有特殊字符(如 ö 和 ä)的 .txt 文件时,它们在 .txt 文件中看起来像这样,当我打开循环 ¿½ 行时也是这样。我怎样才能用真正的特殊字符阅读它们?我需要比较字符串,如果我比较ä == �,它会返回False

【问题讨论】:

  • 如果 � 已经在文件中 - 即您在文本编辑器中查看文件时看到该字符 - 那么这些字符已经损坏。

标签: python file special-characters with-statement txt


【解决方案1】:

python 支持 unicode,实际上 python3 默认使用 utf-8 unicode 编码字符串。所以你应该能够打开文件并读取内容——特殊字符将被优雅地处理,因为它们只是普通的 unicode 字符。

例如:

with open('special', 'r') as inf:
  content = inf.read()
print(content[0])

$ cat special
ääää

$ python3 read.py
ä

【讨论】:

  • 它对我不起作用。
  • 您可能需要先检查您的文件编码。使用notepad++或类似的软件,当你打开文件时,它会在右下角给出你的文件编码。最好的猜测是你的文本文件没有用 utf-8 编码
  • 我的文件是 utf-8 编码的。
  • @AmineLa 这可能与控制台不支持这些字符有关,在这种情况下,您最好的猜测可能是打印到另一个文件并检查它是否打印了应该打印的相同字符,因为它会从字面上传输相同的数据;但是,如果您想检查它,您可能需要使用 unicode 转义序列
【解决方案2】:

您可以尝试使用“编码”参数。它对我有用。

with open("text.txt",'r',encoding='utf-8') as f

    

【讨论】:

  • 通过添加 encoding='utf-8' 打印时得到�。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 2020-05-03
  • 2015-01-28
  • 2017-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多