在Python中搜索Unicode字符

2024-10-06 17:45:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个基于Python/NLTK的NLP项目,其中包含非英语unicode文本。为此,我需要在句子中搜索unicode字符串。在

有一个.txt文件与一些非英语unicode语句一起保存。使用NLTKpunkSentenceTokenizer我将它们断开并保存在python列表中。在

sentences = PunktSentenceTokenizer().tokenize(text)

现在我可以遍历列表并分别获得每个sentence。在


我需要做的是检查sentence并确定哪个单词具有给定的unicode字符。在

示例-

^{pr2}$

假设上面的文本是非英语unicode,我需要找到以GF结尾的单词,然后返回整个单词(可能是该单词的索引)。在

search = 'SDFGF'

类似地,我需要找到以BB开头的单词。在

search2 = 'BBBSDC'

Tags: 文件项目字符串文本txt列表nlpunicode
1条回答
网友
1楼 · 发布于 2024-10-06 17:45:41

如果我没听错,你只需把句子分成单词,在每个单词上循环,检查句子是否以所需字符结尾或开头,例如:

>>> sentence = ['AASFG', 'BBBSDC', 'FEKGG', 'SDFGF']
>>> [word for word in sentence.split() if word.endswith("GF")]
['SDFGF']

sentence.split()可能会被nltk.tokenize.word_tokenize(sentence)之类的东西代替

更新,关于评论:

How can get word in-front of that and behind it

enumerate函数可用于给每个单词一个数字,如下所示:

^{pr2}$

如果执行相同的循环,但保留索引:

>>> results = [(idx, word) for (idx, word) in enumerate(sentence) if word.endswith("GG")]
>>> print results
[(2, 'FEKGG')]

…您可以使用索引来获取下一项或上一项:

>>> for r in results:
...     r_idx = r[0]
...     print "Prev", sentence[r_idx-1]
...     print "Next", sentence[r_idx+1]
...
Prev BBBSDC
Next SDFGF

您需要处理匹配第一个或最后一个单词(if r_idx == 0if r_idx == len(sentence))的情况

相关问题 更多 >