Python 3.x 使用RE在Python中拆分用于标记化的输入
我试图拆分一个输入字符串,以便在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抛出了错误,如果可能的话,我希望消除它。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) 但这会给我不需要的
有人能指出我在使用正则表达式时所犯的错误吗?对于您的示例,这是可行的,但也会给出空字符串:
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。谢谢,我感谢您的帮助!