【问题标题】:python 3 can't recognize this characterpython 3 无法识别这个字符
【发布时间】:2020-10-17 21:29:12
【问题描述】:

我正在使用 python3 读取字符串并将某些元素提取到列表中,在我的脚本顶部使用以下内容:

# -*- coding: utf-8 -*-
import ast
import re 

适用于除一个字符之外的所有字符:????在 unicode 中是:U+C0545 并且在命令行上看起来像:

我只想跳过这个字符,但脚本无法识别它。有没有办法跳过这个字符?

【问题讨论】:

  • “脚本无法识别”...如何??您可以制作s = '\U000C0545',它只是另一个角色。显示失败的代码。它不是分配的 Unicode 字符,但仍可以像任何其他有效代码点一样进行处理。

标签: python loops unicode utf-8 character-encoding


【解决方案1】:

我不知道这是否应该被视为权威来源,但http://www.fileformat.info/info/unicode/char/c0545/index.htm 表明这不是一个有效的 unicode 字符。一些系统可能会选择使用一些占位符字形来表示它,而另一些系统可能会引发错误或以其他奇怪的方式表现。

在您的 python 代码中,您最好的选择可能是处理异常并根据上下文执行适当的操作。

没有看到异常发生的实际来源和实际的异常文本,很难猜出真正的问题。

【讨论】:

  • 成功了!我使用 anystring.encode("unicode_escape") 为疯狂的未知字符找到唯一名称,并从该标识中跳过该字符
  • 在源文件的 Python 字符串中包含该字符不会使其成为无效的 Python 3 程序,只要它被正确编码(默认为 UTF-8)。它只是字符串中的一个代码点。此外,对于权威来源,请使用unicode.org/charts。它不是最新的 Unicode 标准 (13.0) 中分配的代码点。
  • @MarkTolonen 你是对的,我断言未使用的代码点使源无效为时过早。我从不完整的错误描述中推断和猜测(应该要求提供失败的实际代码和实际的错误消息)。我正在编辑我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 2012-03-26
相关资源
最近更新 更多