我有如下文本:
我不喜欢吃Cici的食物(这是真的)
我需要将其标记化为:
['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(', 'it', 'is', 'true', ')']
我发现以下正则表达式(['()\w]+|\.)可以分割成这样:
['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(it', 'is', 'true)']
如何将括号从令牌中删除并将其变为自己的令牌?
感谢您的想法。
我不喜欢吃Cici的食物(这是真的)
我需要将其标记化为:
['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(', 'it', 'is', 'true', ')']
我发现以下正则表达式(['()\w]+|\.)可以分割成这样:
['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(it', 'is', 'true)']
如何将括号从令牌中删除并将其变为自己的令牌?
感谢您的想法。
re.findall(r"\w+(?:'\w+)?|[^\w\s]", s)
。 - Wiktor Stribiżeww+(?:'\w+)?
将匹配所有1个或多个单词字符块,后跟一个可选的',后跟1个或多个单词字符子字符串,而[^\w\s]
将匹配除单词和空格字符之外的单个字符。 - Wiktor Stribiżew(foo)
-re.findall(r'\w+|\W', s)
- 匹配1个或多个单词字符(\w+
),或 (|
) 1个非单词字符(\W
)。但是,如果您计划避免匹配空格(可以与\W
匹配),则需要使用[^\w\s]
从模式中排除它们。这是一种带有例外的对比原则。我会发布一个答案。 - Wiktor Stribiżew