我期待以下代码;令牌化
this is an example 123
成
['this', 'is', 'an', 'example 123']
但它没有看到数字的一部分。有什么建议吗?
import re
from nltk.tokenize import RegexpTokenizer
pattern=re.compile(r"[\w\s\d]+")
tokenizer_number=RegexpTokenizer(pattern)
tokenizer_number.tokenize("this is an example 123")
一个非常好的正则表达式:
[\d.,]+|[A-Z][.A-Z]+\b\.*|\w+|\S
这个话题在以前解决过:Here!
,您可以使用https://regex101.com以交互方式测试正则表达式
使用str.split()
:
s = "this is an example 123"
print(s.split(" ", 3))
OUTPUT:
['this', 'is', 'an', 'example 123']
你的正则表达式是错的。您匹配任何字母,数字或空格序列。你的意思是:
pattern=re.compile(r"\w+\s\d+|\w+")
或者等效地,您可以将其写为r"\w+(?:\s\d+)?"
。