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