使用正则表达式将文本分割为单词、数字和标点符号

3 投票
1 回答
8523 浏览
提问于 2025-04-16 13:07

我想做的是把一段文字拆分成最基本的元素。

比如说:

from nltk.tokenize import *
txt = "A sample sentences with digits like 2.119,99 or 2,99 are awesome."
regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+')
['A','sample','sentences','with','digits','like','2.199,99','or','2,99','are','awesome','.']

你可以看到这样做是没问题的。我的问题是:如果数字出现在文本的末尾会怎么样呢?

txt = "Today it's 07.May 2011. Or 2.999."
regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+') 
['Today', 'it', "'s", '07.May', '2011.', 'Or', '2.999.'] 

结果应该是:

['今天', '它', "'是", '07.五月', '2011', '.', '或者', '2.999', '.']

我需要做什么才能得到上面的结果呢?

1 个回答

8

我创建了一个模式,试图把出现在单词和数字中的句点和逗号也包括进去。希望这对你有帮助:

txt = "Today it's 07.May 2011. Or 2.999."
regexp_tokenize(txt, pattern=r'\w+([.,]\w+)*|\S+')
['Today', 'it', "'s", '07.May', '2011', '.', 'Or', '2.999', '.']

撰写回答