gpt4 book ai didi

Python:替换 Unicode 中的不间断空格

转载 作者:太空狗 更新时间:2023-10-30 00:36:56 29 4
gpt4 key购买 nike

在 Python 中,我有一个 Unicode 编码的文本。此文本包含不间断空格,我想将其转换为“x”。不间断空格等于 chr(160)。我有以下代码,当我使用 Localhost 通过 Eclipse 将它作为 Django 运行时效果很好。没有错误和任何不间断空格被转换。

my_text = u"hello"
my_new_text = my_text.replace(chr(160), "x")

但是当我以任何其他方式运行它时(Python 命令行,Django 通过 runserver 而不是 Eclipse)我得到一个错误:

'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

我猜这个错误是有道理的,因为它试图将 Unicode (my_text) 与非 Unicode 的内容进行比较。我的问题是:

  1. 如果 chr(160) 不是 Unicode,它是什么?
  2. 当我从 Eclipse 运行它时,为什么它会起作用?了解这一点将帮助我确定是否需要更改代码的其他部分。我一直在从 Eclipse 测试我的代码。
  3. (最重要的)如何解决删除不间断空格的原始问题? my_text 肯定会是 Unicode。

最佳答案

  1. 在 Python 2 中,chr(160) 是长度为 1 的字节串,其唯一字节的值为 160,即十六进制 a0。除了在特定编码的上下文中,它没有任何意义。
  2. 我不熟悉 Eclipse,但它可能会玩自己的编码技巧。
  3. 如果您想要 Unicode 字符 NO-BREAK SPACE,即代码点 160,那就是 unichr(160)

例如,

>>> u"hello\u00a0world".replace(unichr(160), "X")
u'helloXworld

关于Python:替换 Unicode 中的不间断空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436897/

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