正则表达式在Python中提取所有单词对及其后面的3个单词和前面的3个单词

2024-09-29 23:17:28 发布

您现在位置: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)单词。。你知道吗

https://regex101.com/r/mP9lT9/1


Tags: 单词mp3dafiwiltesistemaumts
1条回答
网友
1楼 · 发布于 2024-09-29 23:17:28

似乎你想要每6个连续的无空格子字符串。所以呢此任务不需要regex,您可以在列表中使用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。你知道吗

相关问题 更多 >

    热门问题