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

时间:2016-05-28 13:49:46

标签: python regex unicode

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

s = u"abc你好def啊"

现在我想用no-ascii字符拆分,结果如下 result = ["abc", "你好", "def", "啊"]

那么,如何实现呢?

4 个答案:

答案 0 :(得分:4)

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

>>> import re
>>> re.findall('([a-zA-Z0-9]+|[^a-zA-Z0-9]+)', u"abc你好def啊")
["abc", "你好", "def", "啊"]

或者,使用所有ASCII

>>> ascii = ''.join(chr(x) for x in range(33, 127))
>>> re.findall('([{}]+|[^{}]+)'.format(ascii, ascii), u"abc你好def啊")
['abc', '你好', 'def', '啊']

或者,甚至更简单,如@Dolda2000

所示
>>> re.findall('([ -~]+|[^ -~]+)', u"abc你好def啊")
['abc', '你好', 'def', '啊']

答案 1 :(得分:2)

您可以这样做:

s = u"abc你好def啊"
status = ord(s[0]) < 128 
word = ""
res =[]

for b, letter  in zip([ ord(c) < 128 for c in s ], s):
      if b != status:
          res.append(word)
          status = b
          word = ""
      word += letter
res.append(word)

print res
>> ["abc", "你好", "def", "啊"]

答案 2 :(得分:1)

/user/hduser/.Trash

适用于python 2.x版本

答案 3 :(得分:0)

只是......分手。

[s[i:i+3] for i in xrange(0, len(s), 3)]

plot