使用正则表达式从文本中提取嵌入字符串的句子

问题描述 投票:1回答:1

我想从文本中提取(以字符串变量的形式提供),其中嵌入了属于子字符串列表的子字符串的句子。如果我无法提取句子,那么我会在提取感兴趣的子字符串之前和之后的固定长度的字符串跨度中做出妥协。

也许下面的图片会使情况更清晰:

enter image description here

在此图像中,我们看到一个分配给字符串变量的文本。以黄色突出显示的子字符串是关注的子字符串,在给定的文本中出现3次。我想要一个可以返回两个突出显示的句子(绿色+黄色)的函数。如果我无法提取句子,我会在提取黄色突出显示的字符串之前和之后提取固定数量的单词(例如20个单词)而妥协。

子字符串将在感兴趣的子字符串列表中列出。

如上所述,我找到了一种提取确切子字符串的方法,但没有提取出前后文本的范围。

例如,

text = 'Την 25/07/2019 καταχωρίσθηκε στο Γενικό Εµπορικό Μητρώο (Γ.Ε.ΜΗ.) µε Κωδικό Αριθµό Καταχώρισης 1801727 η µε αριθµό 78002/ 25-07-2019 απόφασή µας (Α∆Α:  ΩΙΑ7465ΧΙ8-ΤΨΦ), µε την οποία εγκρίθηκε  η  τροποποίηση εν συνόλω του καταστατικού της ανώνυµης εταιρείας µε την επωνυµία  «ΑΛΟΥΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟΥΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ» και αριθµό Γ.Ε.ΜΗ 14492035000 (πρώην Αρ.ΜΑΕ 17520/06/B/88/18) σύµφωνα µε την  από 29.5.2019 απόφαση της Τακτικής Γενικής Συνέλευσης των µετόχων της, στο πλαίσιο εναρµόνισης µε το ν. 4548/2018 «Αναµόρφωση ∆ικαίου Ανωνύµων Εταιρειών», όπως ισχύει. Το εν λόγω καταστατικό µε ηµεροµηνία 29/5/2019 αποτελείται από 33 άρθρα, ως αυτά διαλαµβάνονται στα κεφάλαια Ι έως ΙΧ αυτού.Ο ΠΡΟΪΣΤΑΜΕΝΟΣ ΤΗΣ ∆ΙEΥΘΥΝΣΗΣ                                                                                                     ΙΩΑΝΝΗΣ ΑΡΕΤΑΙΟΣ      1 ΝΕΟ ΚΕΙΜΕΝΟ ΤΟΥ ΚΑΤΑΣΤΑΤΙΚΟΥ ΤΗΣ ΑΝΩΝΥΜΗΣ ΕΤΑΙΡΙΑΣ «ΑΛΟΥΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟΥΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ» με αριθμό ΜΑΕ: 17520/06/Β/88/18 και αριθμό ΓΕΜΗ: 14492035000 όπως προέκυψε ύστερα από την εναρμόνιση με τις διατάξεις των άρθρων του Ν. 4548/2018 με απόφαση της από 29.05.2019 Γενικής Συνέλευσης των μετόχων της  «ΚΕΦΑΛΑΙΟ I ΣΥΣΤΑΣΗ - ΕΠΩΝΥΜΙΑ - ΣΚΟΠΟΣ - ΕΔΡΑ - ΔΙΑΡΚΕΙΑ  Άρθρο 1 Σύσταση - Επωνυμία Συνίσταται Ανώνυμος Εταιρία με την επωνυμία “ΑΛΟYΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟYΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ‘’ και διακριτικό τίτλο ‘’ΑΛΟΥΜΥΛ Α.Ε.’’. Σε περίπτωση συναλλαγής της Εταιρίας με πρόσωπα της αλλοδαπής, θα χρησιμοποιείται η αγγλόφωνη εκφορά της εταιρικής επωνυμίας, ήτοι ‘’ΑLUMΙL ΑLUΜΙNΙUΜ INDUSTRY SA”.»  Άρθρο 2 Σκοπός «Σκοπός της Εταιρίας είναι η ανέγερση και εκμετάλλευση εργοστασίου παραγωγής επιμήκων προϊόντων αλουμινίου με τη μέθοδο διελάσεως και επιφανειακής επεξεργασίας αυτών. Η έρευνα, ο σχεδιασμός, η μελέτη και η εμπορία εξοπλισμού για παραγωγή ηλεκτρικής ενέργειας από ανανεώσιμες πηγές ενέργειας και ειδικότερα αλλά όχι περιοριστικά από ηλιακή ενέργεια. Η εμπορία των προϊόντων αυτών, καθώς και η εμπορία παρεμφερών προϊόντων'

import regex
list_of_strings =['ΑΛΟΥΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟΥΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ', 
                  'ΑΝΕΚ ΤΟΥΡΙΣΤΙΚΗ - ΞΕΝΟΔΟΧΕΙΑΚΗ - ΣΥΜΜΕΤΟΧΩΝ ΑΝΩΝΥΜΗ ΕΤΑΙΡΕΙΑ', 
 'ATTICA BANK ΑΝΩΝΥΜΗ ΤΡΑΠΕΖΙΚΗ ΕΤΑΙΡΕΙΑ']
regex.findall(r"\L<words>", text, words= list_of_strings)
['ΑΛΟΥΜΥΛ, ΒΙΟΜΗΧΑΝΙΑ ΑΛΟΥΜΙΝΙΟΥ ΑΝΩΝΥΜΗ ΕΤΑΙΡΙΑ']

你有什么建议?

python regex string text-extraction
1个回答
0
投票

这听起来像是进行正则表达式拆分的工作。

from re import split

split('abc\d{3}','sldkfjsdl abc678 sldkfjsdlk thing')

编辑:

编写了通用拆分器。

from re import split

def super_split(regex_list,string): 
    answer = [string] 
    for r in regex_list: 
        answer = sum([sum([[s,r] for s in split(r,a)],[])[:-1] for a in answer],[]) 
    return answer 

s = super_split(list_of_strings,text)

注意,您提供的文字不是图片中提供的全文,因此我只能根据您提供的文字进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.