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

时间:2018-06-07 08:59:27

标签: python split

我对Python比较陌生,有没有办法将字符串"James kicked Bob's ball, laughed and ran away."拆分成以下内容,所以我在列表项["James", "kicked", "Bob's", "ball", ",", "laughed", "and", "ran", "away", "."]中有单词和标点符号。有没有办法在python中做到这一点?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

 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', '.']

答案 1 :(得分:1)

看来你正试图将一个句子标记出来。 一些标记化器已经存在并且运行良好。

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

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', '.']

通过使用标记器,它将处理一些极端情况。例如,句子'I tried but it failed...'将被标记为['I', 'tried', 'but', 'it', 'failed', '...']。这里,末尾的点组合在一起只作为一个标记。同样,"don't"标记为['do', "n't"]而不是基本['don', "'t"]