首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用空格或标点符号作为分隔符,将unicode字符串拆分为列表的最快方法是什么?

使用空格或标点符号作为分隔符,将unicode字符串拆分为列表的最快方法是什么?
EN

Stack Overflow用户
提问于 2011-03-09 14:34:06
回答 4查看 6.3K关注 0票数 3
代码语言:javascript
运行
复制
 # -*- coding: utf-8 -*-
 import string
 s = u"Dobre uczynki są jak dobre poematy. Można łatwo uchwycić, ku czemu zmierzają, lecz nie zawsze da się je racjonalnie wytłumaczyć."
 exclude = set(string.punctuation)
 s = ''.join(ch for ch in s if ch not in exclude)
 s = s.split()
 print s

指纹。

代码语言:javascript
运行
复制
 [u'Dobre', u'uczynki', u's\u0105', u'jak', u'dobre', u'poematy', u'Mo\u017cna', u'\u0142atwo', u'uchwyci\u0107', u'ku', u'czemu', u'zmierzaj\u0105', u'lecz', u'nie', u'zawsze', u'da', u'si\u0119', u'je', u'racjonalnie', u'wyt\u0142umaczy\u0107']

它看起来不仅不优雅,而且速度很慢。

你能找到更好的解决方案吗?也许使用正则表达式?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-09 14:49:13

如果必须重用正则表达式并使用re.split,请使用re.compile

代码语言:javascript
运行
复制
import string
import re

s = u"Dobre uczynki są jak dobre poematy. Można łatwo uchwycić, ku czemu zmierzają, lecz nie zawsze da się je racjonalnie wytłumaczyć."
regex = re.compile(r'[%s\s]+' % re.escape(string.punctuation))
print regex.split(s)
票数 6
EN

Stack Overflow用户

发布于 2011-03-09 14:40:16

使用Regular expressions

代码语言:javascript
运行
复制
# -*- coding: utf-8 -*-
import re
s = u"Dobre uczynki są jak dobre poematy. Można łatwo uchwycić, ku czemu zmierzają, lecz nie zawsze da się je racjonalnie wytłumaczyć."
print re.split('\W+', s, flags=re.UNICODE)

当然,您可以使用更具体的正则表达式,但此正则表达式似乎符合要求。

请注意,flags参数适用于python 2.7+。如果您使用的是早期版本,只需使用'\W+(?u)'作为正则表达式。

票数 1
EN

Stack Overflow用户

发布于 2011-03-09 14:43:06

这个应该可以了。(我承认我还没有测试过它)

代码语言:javascript
运行
复制
import re, string
s = 'your string ...'
re.split('\s'+''.join(string.punctuation), s)

编辑:不要使用我的。Mahmoud Abdelkader上面的答案更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5242213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档