我正在尝试实现一个标记器来拆分字符串。
我的特殊条件是:拆分标点 . , ! ?分成一个单独的字符串,并拆分任何有空格的字符,即I have a dog!'-4@
-
像这样的。。。。。
我不打算尝试nltk的包,我已经看了re.split
和re.findall
,但是对于这两种情况:re.split
=我不知道如何要拆分旁边有标点符号的单词,如“狗”,re.findall
=当然它会打印出所有匹配的字符串,但是不匹配的字符串呢?
如果你们有任何建议,我很乐意尝试。
您是否试图在分隔符(标点符号)上拆分,同时将其保留在最终结果中?这样做的一种方法是:
import re
import string
sent = "I have a dog!'-4@"
punc_Str = str(string.punctuation)
print(re.split(r"([.,;:!^ ])", sent))
这就是我得到的结果。
['I', ' ', 'have', ' ', 'a', ' ', 'dog', '!', "'-4@"]
尝试:
re.findall(r'[a-z]+|[.!?]|(?:(?![.!?])\S)+', txt, re.I)
正则表达式中的替代项:
[a-z]
-一个非空的字母序列(忽略大小写),[.
-列表中的任何(单个)字符(注意括号中既不是点也不是?需要引用),例如,对于包含I have a dog!'-4@?的文本。
['I', 'have', 'a', 'dog', '!', "'-4@", '?', '.']