Строка RegEx работает при непосредственном назначении в Python, но не из базы данных PostgreSQL - PullRequest
0 голосов
/ 11 июня 2018

У меня есть рабочий режим для определения категорий, к которым относится новость.Подпрограмма работает при назначении значений в Python для заголовка, категории, подкатегории и поисковых слов как RegExp.

Но при извлечении этих значений из PostgreSQL в виде строк я не получаю никаких ошибок или результатов из тех жерутина.

Я проверил типы данных, оба являются строками Python.

Что можно сделать, чтобы это исправить?

# set the text to be analyzed
title = "next week there will be a presentation. The location will be aat"

# these could be the categories
category = "presentation"
subcategory = "scientific"

# these are the regular expressions
main_category_search_words = r'\bpresentation\b'
sub_category_search_words= r'\basm microbe\b | \basco\b | \baat\b'

category_final = ''
subcategory_final = ''

# identify main category
r = re.compile(main_category_search_words, flags=re.I | re.X)
result = r.findall(title)

if len(result) == 1:
    category_final = category

    # identify sub category
    r2 = re.compile(sub_category_search_words, flags=re.I | re.X)
    result2 = r2.findall(title)
    if len(result2) > 0:
        subcategory_final = subcategory

print("analysis result:", category_final, subcategory_final)

1 Ответ

0 голосов
/ 11 июня 2018

Я почти уверен, что то, что вы получите от PostgreSQL, не является необработанным строковым литералом , следовательно, ваш RegEx недействителен.Вам придется избегать обратной косой черты в вашем шаблоне явно в БД.

print(r"\basm\b")
print("\basm\b")
print("\\basm\\b")

# output
\basm\b

as       # yes, including the line break above here
\basm\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...