使用RE分解Python中的令牌化的输入



我正在尝试将输入字符串分开以在Python中进行标记,但是到目前为止,所有尝试都导致了Python"无需重复"投诉。

目前,我正在使用re.findall而不是re.split,但我不确定我的正则误差在哪里。

我当前的正则是这样:

inputlist = re.findall(r" [ w'] | [。

我想在标点符号或空格上分开。

我以前尝试过:

inputlist = re.split(r'( s | w(*',testString(

,但这会给我不良的输出字符串。

我也尝试了:

inputList = re.split(r'( s (|([。

但是遇到了相同的错误。

测试串的示例:

testString ="美丽的约翰国王!???我在这里。这是'回合时间。

所需输出的示例:

['美丽',','',',','','','!','',',',',',',',','',"我","我",',''','。','',"是",'','',''',',','','','。'。]

我使用我的re.findall获得了正确的输出,但是Python正在丢弃错误,如果可能的话,我想摆脱它。有人可以指出我使用正则犯错的错误吗?

对于您的示例,这也有效,但也给空字符串:

re.split(r'([ !?.])', testString)
# ['Beautiful', ' ', 'King', ' ', 'John', '!', '', ' ', '', '?', '', '?', '', '?', '', ' ', "I'm", ' ', 'here', '.', '', ' ', "It's", ' ', "'bout", ' ', 'time', '.', '']

但是您所需的输出只是一个过滤器OP:

inputList = [t for t in re.split(r'([ !?.])', t) if t]
# ['Beautiful', ' ', 'King', ' ', 'John', '!', ' ', '?', '?', '?', ' ', "I'm", ' ', 'here', '.', ' ', "It's", ' ', "'bout", ' ', 'time', '.']

最新更新