日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串

發布時間:2024/9/27 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1要提取大量燒成的一部分。有一個目標詞和之前和之后單詞的數量上限。因此所提取的子必須包含單詞之前和之后它的上界目標字一起。在之前和之后的部分可以包含少言,如果目標字更接近文本的開頭或結尾。

進行了串

"Lorem存有胡蘿卜,增強大學生開發者,但他們occaecat時間和活力,如勞動力和肥胖。多年來來,誰nostrud鍛煉,學區工作,除非他們aliquip優勢來自它。作業如果cupidatat消費者找到樂趣想成為一名足球cillum他要躲避痛苦,不會產生任何結果。excepteur cupidatat黑人就不是excepteur,是舒緩的靈魂,那就是,他們拋棄了那些誰是責怪你的煩惱的一般責任。"

目標的話,工作

words_before:5

words_after:2

應該返回['veniam, quis nostrud exercitation ullamco laboris nisi ut']

1個思想幾個可能的模式,但沒有一次成功。 1猜它也可以通過簡單地遍歷發射前,從目標背單詞做。不過正則表達式肯定會令事情變得更容易。任何幫助,將不勝感激。

感謝所有的答案。 所有這些都按預期工作。 正則表達式對我來說最方便,因為我的字符串中填充了非字母字符!

如果要拆分單詞,可以使用slice()和split()功能。 例如:

>>> text ="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod

tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, qu

is nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu

fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in

culpa qui officia deserunt mollit anim id est laborum.".split()

>>> n = text.index('laboris')

>>> s = slice(n - 5, n + 3)

>>> text[s]

['veniam,', 'quis', 'nostrud', 'exercitation', 'ullamco', 'laboris', 'nisi', 'ut']

If you still want regex....

def find_context(word_, n_before, n_after, string_):

import re

b= '\w+\W+' ?* n_before

a= ?'\W+\w+' * n_after

pattern = '(' + b + word_ + a + ')'

print(re.search(pattern, string_).groups(1)[0])

find_context('laboris', 5, 2, st)

veniam, quis nostrud exercitation ullamco laboris nisi ut

find_context('culpa', 2, 2, st)

sunt in culpa qui officia

這似乎總是會給出5個之前和之后的2個。 我認為OP需要前后任意數字。 或者它實際上只是5或2?

@idjaw我做了一個更改,現在它是一個函數,可以輸入參數值。

您也可以使用nltk和它的"一致"方法來接近它,受到Calling NLTK的一致性的啟發 - 如何在使用的單詞之前/之后獲取文本?:

A concordance view shows us every occurrence of a given word, together

with some context.

import nltk

def get_neighbors(input_text, word, before, after):

text = nltk.Text(nltk.tokenize.word_tokenize(input_text))

concordance_index = nltk.ConcordanceIndex(text.tokens)

offset = next(offset for offset in concordance_index.offsets(word))

return text.tokens[offset - before - 1: offset] + text.tokens[offset: offset + after + 1]

text = u"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

print(get_neighbors(text, 'laboris', 5, 2))

在目標詞之前打印5個單詞/令牌,在之后打印2個:

[u'veniam', u',', u'quis', u'nostrud', u'exercitation', u'ullamco', u'laboris', u'nisi', u'ut']

總結

以上是生活随笔為你收集整理的python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。