Python 3.x 使用RE在Python中拆分用于标记化的输入

Python 3.x 使用RE在Python中拆分用于标记化的输入,python-3.x,tokenize,Python 3.x,Tokenize,我试图拆分一个输入字符串,以便在Python中进行标记化,但迄今为止所做的所有尝试都会导致Python“无需重复”的抱怨 目前,我使用re.findall而不是re.split,但我不确定我的正则表达式的错误在哪里 我当前的正则表达式如下所示: inputList=re.findall(r“[\w']+|[,!?;]|[\s]”,testString) 我想在标点或空格上分开 我以前试过: inputList=re.split(r'(\s |\W)*',testString) 但这会给我不需要的

我试图拆分一个输入字符串,以便在Python中进行标记化,但迄今为止所做的所有尝试都会导致Python“无需重复”的抱怨

目前,我使用re.findall而不是re.split,但我不确定我的正则表达式的错误在哪里

我当前的正则表达式如下所示:

inputList=re.findall(r“[\w']+|[,!?;]|[\s]”,testString)

我想在标点或空格上分开

我以前试过:

inputList=re.split(r'(\s |\W)*',testString)

但这会给我不需要的输出字符串

我还尝试:

inputList=re.split(r'(\s+)|([,!?;]+)',testString)

但却犯了同样的错误

testString的一个示例:

testString=“美丽的约翰国王!??我在这里。是时候了。”

期望输出的示例:

[“美丽”、“国王”、“约翰”、“时间”、“我在”、“在这里”、“在这里”、“在这里”、“在这里”、“在这里”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“在一起”、“时间”

我使用re.findall获得了正确的输出,但是Python抛出了错误,如果可能的话,我希望消除它。
有人能指出我在使用正则表达式时所犯的错误吗?

对于您的示例,这是可行的,但也会给出空字符串:

re.split(r'([ !?.])', testString)

# ['Beautiful', ' ', 'King', ' ', 'John', '!', '', ' ', '', '?', '', '?', '', '?', '', ' ', "I'm", ' ', 'here', '.', '', ' ', "It's", ' ', "'bout", ' ', 'time', '.', '']
但您所需的输出只是一个过滤器:

inputList = [t for t in re.split(r'([ !?.])', t) if t]

# ['Beautiful', ' ', 'King', ' ', 'John', '!', ' ', '?', '?', '?', ' ', "I'm", ' ', 'here', '.', ' ', "It's", ' ', "'bout", ' ', 'time', '.']

一个testString的例子将有助于回答您的问题。编辑以包含示例testString。谢谢,我感谢您的帮助!