我正在尝试将输入字符串分开以在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', '.']