Regex, найти предложение, все из которых являются заглавными буквами - PullRequest
1 голос
/ 11 марта 2020

Мне нужна твоя помощь.

В настоящее время я использую этот раздел кода для своей работы;

    altbaslik = []
    for line in sentenceIndex:
        finded = re.match(r"\w*[A-Z]\w*[A-Z]\w*|[Ö|Ç|Ş|Ü|Ğ|İ]", line)
        if finded != None:
          finded2 = finded.group()
          altbaslik.append(finded2)


    print(altbaslik)

terminceIndex = это список. Он содержит токенизированные предложения из абзаца. Например:


Пример параграфа:

VODOFONE ARENA ŞANSI Ama asıl önemli olan nokta Мурат Четинкая, Cumhurbaşkanı Erdoğan ve Başbakan Davutoğlu'nun ittifakilıyla. O süreci ayrıntılı olarak aktaracağım. Hatta Cumhurbaşkanı ve Başbakan'ı aynı isim üzerinde ittifak etmeye götüren kriterlere de değineceğim. Ama bir şey var ki aktarmasam olmaz. Merkez Bankası Başkanı'nın kaderi Dolmabahçe ile Vodafone Arena arasındaki yolculukta belirleniyor.



предложениеИндекс:

['ВОДОФОНЕ АРЕНА llÇneneneneI as as ol ol ol ol ol olIIIIIIIIIIIIIIIIIIIIIIIIIIIII ErIIIIII as asII asI as as as asII as asII as asI as as as as as as Er as Er Er as as as as as as as as as as as as as as as as Er as Er Er Er as ol ol Er as as Er Er Erm ErII as asm ol asII as asm ol asI as ol asmm Er as as as asm as as as asI asm asmI as asнннurbkmmIII as as asmm Er Er ErI ErIII Er as asmmII as as Erннн Erнн Başbakan Davutoğlu'nun ittifakıyla seçildi. ',' ................... ',' ................. ' ]


Мне нужно регулярное выражение, которое находит все заглавные буквы в предложениях.

"VODOFONE ARENA ŞANSI". Мне нужно найти и извлечь этот раздел. текущее регулярное выражение, которое я использую, не работает. Мне нужна помощь в этом регулярном выражении.

ПРИМЕЧАНИЕ: [Ö | Ç | Ş | Ü | Ğ | İ] Я работаю над текстом turki sh. Вот почему мне нужно обратить внимание и на эти письма.

Спасибо за людей, которые сэкономят свое время и помогли мне в этом вопросе:)

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Чтобы избежать перечисления всех вариантов прописных букв, установите и используйте новый модуль regex . Это очень похоже на (пока) значение по умолчанию re, но имеет превосходную поддержку свойств Unicode .

Например, чтобы найти любой заглавный символ, вы можете использовать свойство Unicode \p{Lu}:

import regex

text = 'VODOFONE ARENA ŞANSI Ama asıl önemli olan nokta Murat Çetinkaya, ' \
       'ΘΑΥΜΑΣΙΟΣ Cumhurbaşkanı Erdoğan ve Başbakan Davutoğlu’nun ittifakıyla seçildi.'

found = regex.findall(r'\b\p{Lu}+(?: \p{Lu}+)*\b', text)
print (found)  # => ['VODOFONE ARENA ŞANSI', 'ΘΑΥΜΑΣΙΟΣ']
0 голосов
/ 11 марта 2020

Вы можете использовать re.findall с

r'\b[A-ZÖÇŞÜĞİ]+(?:\W+[A-ZÖÇŞÜĞİ]+)*\b'

С библиотекой Python regex, которую вы можете установить с помощью pip install regex:

r'\b\p{Lu}+(?:\W+\p{Lu}+)*\b'

См. regex demo .

Подробности

  • \b - граница слова
  • [A-ZÖÇŞÜĞİ]+ - 1+ заглавные буквы ( Базовая латиница и турки sh) (\p{Lu} соответствует любым заглавным буквам Юникода)
  • (?:\W+[A-ZÖÇŞÜĞİ]+)* - 0 или более повторений
    • \W+ - любые 1+ несимвольные символы
    • [A-ZÖÇŞÜĞİ]+ - 1+ заглавные буквы (базовая латиница и турки sh) (\p{Lu} соответствует любым заглавным буквам Юникода)
  • \b - a граница слова

См. Python демо :

import re

altbaslik=[]
sentenceIndex = ['VODOFONE ARENA ŞANSI Ama asıl önemli olan nokta Murat Çetinkaya, Cumhurbaşkanı Erdoğan ve Başbakan Davutoğlu’nun ittifakıyla seçildi.','...................','.................']
for line in sentenceIndex:
    found = re.findall(r"\b[A-ZÖÇŞÜĞİ]+(?:\W+[A-ZÖÇŞÜĞİ]+)*\b", line)
    if len(found):
        altbaslik.extend(found)

print(altbaslik) # => ['VODOFONE ARENA ŞANSI']

Или с PyPi regex:

import regex

altbaslik=[]
sentenceIndex = ['VODOFONE ARENA ŞANSI Ama asıl önemli olan nokta Murat Çetinkaya, Cumhurbaşkanı Erdoğan ve Başbakan Davutoğlu’nun ittifakıyla seçildi.','...................','.................']
for line in sentenceIndex:
    found = regex.findall(r'\b\p{Lu}+(?:\W+\p{Lu}+)*\b', line)
    if len(found):
        altbaslik.extend(found)

print(altbaslik) # => ['VODOFONE ARENA ŞANSI']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...