![](/img/trans.png)
[英]Python extract 3 words before and 3 words after a specific list of words with a regex
[英]Regex to extract all pair of words and their respectively 3 words after and 3 words before in Python
正則表達式提取所有成對的單詞及其分別在之后的3個單詞和之前的3個單詞
這是我的正則表達式:
((?:[\S,]+\s+){0,3})((?:[\S,]+\s*){0,3})
這是文本:
Quadriband - UMTS - HSDPA - HSUPA - LTE - Wi-Fi Fotocamera da 8 Megapixel - Lettore MP3 Sistema Operativo iOS8 - GPS integrato
我只得到以下結果:
Quadriband - UMTS - HSDPA -
HSUPA - LTE - Wi-Fi Fotocamera
da 8 Megapixel - Lettore MP3
Sistema Operativo iOS8 - GPS integrato
但我想要所有組合,尤其是- Wi-Fi Fotocamera - da 8 Megapixel
我如何編輯我的正則表達式,以捕獲空格之前的所有可能的3個單詞(也可以是0、1或2個也可以),而在空格之后可以捕獲3個單詞(也可以是0、1或2個也可以)。
似乎您需要每6個連續的無空格子字符串。因此,您不需要正則表達式即可在列表推導中使用itertools.islice
:
>>> from itertools import islice
>>>
>>> [' '.join(islice(li,i,i+6)) for i in range(len(li))]
['Quadriband - UMTS - HSDPA -', '- UMTS - HSDPA - HSUPA', 'UMTS - HSDPA - HSUPA -', '- HSDPA - HSUPA - LTE', 'HSDPA - HSUPA - LTE -', '- HSUPA - LTE - Wi-Fi', 'HSUPA - LTE - Wi-Fi Fotocamera', '- LTE - Wi-Fi Fotocamera da', 'LTE - Wi-Fi Fotocamera da 8', '- Wi-Fi Fotocamera da 8 Megapixel', 'Wi-Fi Fotocamera da 8 Megapixel -', 'Fotocamera da 8 Megapixel - Lettore', 'da 8 Megapixel - Lettore MP3', '8 Megapixel - Lettore MP3 Sistema', 'Megapixel - Lettore MP3 Sistema Operativo', '- Lettore MP3 Sistema Operativo iOS8', 'Lettore MP3 Sistema Operativo iOS8 -', 'MP3 Sistema Operativo iOS8 - GPS', 'Sistema Operativo iOS8 - GPS integrato', 'Operativo iOS8 - GPS integrato', 'iOS8 - GPS integrato', '- GPS integrato', 'GPS integrato', 'integrato']
同樣,如果您對單詞有特殊的條件,則可以通過將特定的正則表達式傳遞給re.findall
並將其用作s.split
來re.findall
s.split
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.