提问者:小点点

将句子拆分成具有特殊条件的字符串


我正在尝试实现一个标记器来拆分字符串。

我的特殊条件是:拆分标点 . , ! ?分成一个单独的字符串,并拆分任何有空格的字符,即I have a dog!'-4@-

像这样的。。。。。

我不打算尝试nltk的包,我已经看了re.splitre.findall,但是对于这两种情况:re.split=我不知道如何要拆分旁边有标点符号的单词,如“狗”,re.findall=当然它会打印出所有匹配的字符串,但是不匹配的字符串呢?

如果你们有任何建议,我很乐意尝试。


共2个答案

匿名用户

您是否试图在分隔符(标点符号)上拆分,同时将其保留在最终结果中?这样做的一种方法是:

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]-一个非空的字母序列(忽略大小写),
  • [.-列表中的任何(单个)字符(注意括号中既不是点也不是?需要引用),
  • <代码>(?:(?![.!?])\s)-非白字符的非空序列,列表中除外。

例如,对于包含I have a dog!'-4@?的文本。

['I', 'have', 'a', 'dog', '!', "'-4@", '?', '.']