python - 如何转义字符串中的unicode特殊字符并将其写入UTF编码文件

标签 python python-3.x utf unicode-escapes

我的目标是:

字符串如:

Bitte überprüfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.

转换为:

'Bitte \u00FCberpr\u00FCfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und l\u00F6schen Sie dann die tats\u00E4chlichen Dokumente.'

并以这种形式写入文件(UTF-8编码)。

最佳答案

另一种解决方案,不依赖于内置的 repr() 而是从头开始实现它:

orig = 'Bitte überprüfen Sie, ob die Dokumente erfolgreich in System eingereicht wurden, und löschen Sie dann die tatsächlichen Dokumente.'

enc = re.sub('[^ -~]', lambda m: '\\u%04X' % ord(m[0]), orig)

print(enc)

区别:

  • 仅使用 \u 编码,从不使用任何其他序列,而 repr() 使用大约三分之一的字母表(例如,BEL 字符将被编码为\u0007 而不是 \a)
  • 指定的大写编码(\u00FC 而不是 \u00fc)
  • 不处理平面 0 之外的 unicode 字符(可以很容易地扩展,给定这些应该如何表示的规范)
  • 它不处理任何预先存在的 \u 序列,而 repr() 将它们转换为 \\u;可以扩展,也许将 \ 编码为 \u005C:
    enc = re.sub(r'[^ -[\]-~]', lambda m: '\\u%04X' % ord(m[0]), orig)
    

关于python - 如何转义字符串中的unicode特殊字符并将其写入UTF编码文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68391790/

相关文章:

unicode - UTF-8、UTF-16 和 UTF-32

Python文本文件中奇怪的换行符

c++ - 使用 UTF8

python - Tensorflow CPU(在 python 交互式 shell 中正常,但运行脚本时出现 coredump)

python - Django 应用程序可以在 localhost 上运行,但不能在 Heroku 上运行

python - DictWriter 没有从 DictReader 接收我的数据

python 3.5 matplotlib从csv读取日期但不能表示为X轴上的日期

python - 如何打印生成器对象的产生值?

Python 3 "Sideways"相对导入

python-3.x - 如何对标签或按钮进行永久性条目更改