# -*- 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指纹。
 [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']它看起来不仅不优雅,而且速度很慢。
你能找到更好的解决方案吗?也许使用正则表达式?
发布于 2011-03-09 14:49:13
如果必须重用正则表达式并使用re.split,请使用re.compile。
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)发布于 2011-03-09 14:40:16
使用Regular expressions!
# -*- 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)'作为正则表达式。
发布于 2011-03-09 14:43:06
这个应该可以了。(我承认我还没有测试过它)
import re, string
s = 'your string ...'
re.split('\s'+''.join(string.punctuation), s)编辑:不要使用我的。Mahmoud Abdelkader上面的答案更好。
https://stackoverflow.com/questions/5242213
复制相似问题