如何一致地分割这两个字符串?

2024-09-29 22:28:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这个小代码是用来识别中文单词的。它主要起作用,但在某些情况下有一些问题,第一个词是𩾃鱼' 这就是一个例子

re_default = re.compile("([\u4E00-\u9FD5a-zA-Z0-9+#&\._%\-]+)", re.U)

words1 = re_default.split('𩾃鱼')
words2 = re_default.split('兰蔻')

输出为:

['𩾃', '鱼', ''] ['', '兰蔻', '']

似乎第一个字是𩾃鱼' 不在定义的代码范围内。我想把它一分为二兰蔻'. 如何找到合适的范围并在正则表达式中容纳它


Tags: 代码redefault定义情况单词例子split
1条回答
网友
1楼 · 发布于 2024-09-29 22:28:52

如评论中所述,您只指定了汉字的多个范围中的一个

可以使用8位六位数Unicode转义指定更高的CJK范围。范围列在Unicode 14.0 Character Code Charts中。以下包括所有CJK统一表意文字扩展:

import re

CJK = ('\u4E00-\u9FFF'          # CJK Unified Ideographs
       '\u3400-\u4DBF'          # CJK Unified Ideographs Extension A
       '\U00020000-\U0002A6DF'  # CJK Unified Ideographs Extension B
       '\U0002A700-\U0002B73F'  # CJK Unified Ideographs Extension C
       '\U0002B740-\U0002B81F'  # CJK Unified Ideographs Extension D
       '\U0002B820-\U0002CEAF'  # CJK Unified Ideographs Extension E
       '\U0002CEB0-\U0002EBEF'  # CJK Unified Ideographs Extension F
       '\U00030000-\U0003134F') # CJK Unified Ideographs Extension G

re_default = re.compile(rf'([{CJK}a-zA-Z0-9+#&._%-]+)')

words1 = re_default.split('𩾃鱼')
words2 = re_default.split('兰蔻')

print(words1,words2)

输出:

['', '𩾃鱼', ''] ['', '兰蔻', '']

相关问题 更多 >

    热门问题