python 将 unicode 字符串拆分为 3 个字节的 utf8 字符

Pen*_* Qu 3 python regex unicode

假设我们在python中有一个unicode字符串,

s = u"abc??def?"

现在我想用 no-ascii 字符分割它,结果像 result = ["abc", "??", "def", "?"]

那么,如何实现呢?

C14*_*14L 5

使用正则表达式,您可以简单地在“有或没有”az 字符之间进行拆分。

>>> import re
>>> re.findall('([a-zA-Z0-9]+|[^a-zA-Z0-9]+)', u"abc??def?")
["abc", "??", "def", "?"]
Run Code Online (Sandbox Code Playgroud)

或者,使用所有 ASCII

>>> ascii = ''.join(chr(x) for x in range(33, 127))
>>> re.findall('([{}]+|[^{}]+)'.format(ascii, ascii), u"abc??def?")
['abc', '??', 'def', '?']
Run Code Online (Sandbox Code Playgroud)

或者,甚至如@Dolda2000 所建议的那样更简单

>>> re.findall('([ -~]+|[^ -~]+)', u"abc??def?")
['abc', '??', 'def', '?']
Run Code Online (Sandbox Code Playgroud)