Моя проблема началась, когда я сохранил все выражения RegEx в файле HDF5, а затем попытался извлечь их с помощью pandas dataframe.
Основная проблема заключается в том, что выражения RegEx, хранящиеся в pandas dataframe, не работают сre.findall
.Что еще хуже, я использовал арабский Unicode в своих выражениях RegEx.
Чтобы упростить ситуацию, я привожу следующий пример:
Давайте предположим, что в переменной хранится следующий текст:
mytext = 'الفئران هم حيوانات غير معمرة لأن معدل استقلابهم مرتفع وضربات قلبهم سريعة'
И давайте получим следующее выражение RegEx:
pattern_they = r'([\u0621-\u064a]+\u0647\u0645|\b\u0647\u0645)\b'
Если мы используем код print(re.findall(pattern_they, mytext))
, мы получим список из трех элементов:
['هم', 'استقلابهم', 'قلبهم']
Теперь, если мы создадим новый шаблон, который будет содержать pattern_they
, заключенный в двойные кавычки:
pattern_they_new = "r'([\u0621-\u064a]+\u0647\u0645|\b\u0647\u0645)\b'"
И затем использовать этот шаблон в print(re.findall(pattern_they_new, mytext))
, мы получим пустой список, который не является правильным.
Проблема в том, что все выражения RegEx, которые я извлек из фрейма данных pandas, заключены в двойные кавычки, как и pattern_they_new
.Я не добавлял двойные кавычки, когда сохранял выражения RegEx;они добавляются автоматически при извлечении их из фрейма данных panda.
Я пытался сохранить выражения RegEx без r'…'
, но он также не работал с re.findall
.
Как можноЯ решаю эту проблему?
Примечание: этот вопрос является продолжением другого вопроса, который был задан ранее: Как хранить и читать необработанные строки RegEx из кадра данных панд