gpt4 book ai didi

python - 正则表达式匹配无效的 Unicode 字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:47 25 4
gpt4 key购买 nike

我有这样的字符串:
ꐊ,ꀵ,\u0f6e,ⴗ,ꦚ,\u2d75,ꢯ,⾌,\ua97d,⩱,ㇴ,\u2d6e,鼺,\x00Ꞁ
我想过滤掉所有这些以斜杠开头的无效字符,我正试图用 Python 中的正则表达式来做。

它确实是这样工作的:

re.sub(r",\u0f6e,", r",deleted,", s)

但不是这样的:

re.sub(r",\.{5},", r",deleted,", s)

它应该根据 http://pythex.org 工作,所以我想这是因为它们是无效字符?我怎样才能匹配它们?

编辑:@metatoaster 说我的问题不明确:问题的出现似乎是因为输入字符串 s 不是原始字符串。

>>> s = ' ꐊ,ꀵ,\u0f6e,ⴗ,ꦚ,\u2d75,ꢯ,⾌,\ua97d,⩱,ㇴ,\u2d6e,鼺,\x00Ꞁ'
>>> re.sub(r",\u0f6e,", r",deleted,", s)
' ꐊ,ꀵ,deleted,ⴗ,ꦚ,\u2d75,ꢯ,⾌,\ua97d,⩱,ㇴ,\u2d6e,鼺,\x00Ꞁ'

最佳答案

您的字符串似乎带有未定义的 Unicode 代码点。 \u0f6e 是表示为转义码的单个代码点。示例:

>>> s = 'ꐊ,ꀵ,\u0f6e,ⴗ,ꦚ,\u2d75,ꢯ,⾌,\ua97d,⩱,ㇴ,\u2d6e,鼺,\x00Ꞁ'
>>> s
'ꐊ,ꀵ,\u0f6e,ⴗ,ꦚ,\u2d75,ꢯ,⾌,\ua97d,⩱,ㇴ,\u2d6e,鼺,\x00Ꞁ'
>>> print(s)
ꐊ,ꀵ,཮,ⴗ,ꦚ,⵵,ꢯ,⾌,꥽,⩱,ㇴ,⵮,鼺, Ꞁ

注意打印字符串如何将字符显示为未定义的框。它显示为用于调试目的的转义码。这些代码点有一些共同点。根据 Unicode 数据库,它们是 C 类(控制)代码点。他们也没有名字。一种快速过滤的方法是:

>>> ''.join(['deleted' if ud.category(c)[0] == 'C' else c for c in s])
'ꐊ,ꀵ,deleted,ⴗ,ꦚ,deleted,ꢯ,⾌,deleted,⩱,ㇴ,deleted,鼺,deletedꞀ'

关于python - 正则表达式匹配无效的 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53217223/

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