Python 如何拆分单词和标点符号上的字符串

Python 如何拆分单词和标点符号上的字符串,python,split,Python,Split,我对Python比较陌生,有没有一种方法可以将字符串“James踢Bob的球,笑着跑了。”拆分为以下内容,因此我在列表项中有单词和标点符号。[“James”,“kicked”,“Bob的”,“ball”,“and”,“Rand”,“away”,“and”]。在python中有没有实现这一点的方法 您可以尝试以下方法: import re str = "James kicked Bob's ball, laughed and ran away." x = re.findall(r"[\w'

我对Python比较陌生,有没有一种方法可以将字符串“James踢Bob的球,笑着跑了。”拆分为以下内容,因此我在列表项中有单词和标点符号。[“James”,“kicked”,“Bob的”,“ball”,“and”,“Rand”,“away”,“and”]。在python中有没有实现这一点的方法

您可以尝试以下方法:

 import re
 str = "James kicked Bob's ball, laughed and ran away."

 x = re.findall(r"[\w']+|[.,!?;]", str)
 print(x)
输出:

['James', 'kicked', "Bob's", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']
['James', 'kicked', 'Bob', "'s", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']
您可以尝试以下方法:

 import re
 str = "James kicked Bob's ball, laughed and ran away."

 x = re.findall(r"[\w']+|[.,!?;]", str)
 print(x)
输出:

['James', 'kicked', "Bob's", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']
['James', 'kicked', 'Bob', "'s", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']

你似乎在试图把一个句子标记化。 一些标记器已经存在并且性能良好

例如,您可以使用。 安装后,您需要下载您的语言模型:

python -m spacy download en
然后您将能够在脚本中使用它:

import spacy
nlp = spacy.load('en')
tokens = list(nlp("James kicked Bob's ball, laughed and ran away."))
输出:

['James', 'kicked', "Bob's", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']
['James', 'kicked', 'Bob', "'s", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']

通过使用标记器,它将处理一些特殊情况。例如,句子
“我尝试过但失败了…”
将标记为
[“我”、“尝试过”、“但是”、“它”、“失败了”、“失败了”]
。此处,末端的点仅作为一个标记组合在一起。同样地,
“don”
被标记为
['do',“n't”]
,而不是基本的
['don',“'t”]

似乎你在试图标记一个句子。 一些标记器已经存在并且性能良好

例如,您可以使用。 安装后,您需要下载您的语言模型:

python -m spacy download en
然后您将能够在脚本中使用它:

import spacy
nlp = spacy.load('en')
tokens = list(nlp("James kicked Bob's ball, laughed and ran away."))
输出:

['James', 'kicked', "Bob's", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']
['James', 'kicked', 'Bob', "'s", 'ball', ',', 'laughed', 'and', 'ran', 'away', '.']

通过使用标记器,它将处理一些特殊情况。例如,句子
“我尝试过但失败了…”
将标记为
[“我”、“尝试过”、“但是”、“它”、“失败了”、“失败了”]
。此处,末端的点仅作为一个标记组合在一起。同样地,
“don”
被标记为
['do',“n't”]
而不是基本的
['don',“'t”]

ball
之间是否有空格??您想要“,”作为单独的单词,而不是单个引号(')?我说的对吗?
ball
之间是否有空格?您希望“,”和“.”作为单独的单词,而不是单独的引号(')?我说得对吗?