簡體   English   中英

在Python中搜索Unicode字符

[英]Searching for Unicode characters in Python

我正在基於Python / NLTK的非英語unicode文本的NLP項目。 為此,我需要在句子中搜索unicode字符串。

有一個.txt文件,其中保存了一些非英語的unicode句子。 我使用NLTK PunktSentenceTokenizer破壞了它們並將其保存在python列表中。

sentences = PunktSentenceTokenizer().tokenize(text)

現在我可以遍歷列表並分別獲取每個sentence


我需要做的是遍歷該sentence並確定哪個單詞具有給定的unicode字符。

范例-

sentence = 'AASFG BBBSDC FEKGG SDFGF'

假設上面的文本是非英語unicode,我需要找到以GF結尾的單詞,然后返回整個單詞(可能是該單詞的索引)。

search = 'SDFGF'

同樣,我需要找到以BB開頭的單詞。

search2 = 'BBBSDC'

如果我理解正確,則只需將句子拆分成單詞,循環遍歷每個單詞,然后檢查它是否以所需的字符結尾或以開頭,例如:

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

sentence.split()也許可以用類似替代nltk.tokenize.word_tokenize(sentence)

更新 ,關於評論:

如何在其前面和后面獲得單詞

enumerate函數可用於為每個單詞賦予一個數字,如下所示:

>>> print list(enumerate(sentence))
[(0, 'AASFG'), (1, 'BBBSDC'), (2, 'FEKGG'), (3, 'SDFGF')]

然后,如果執行相同的循環,但保留索引:

>>> 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM