У меня есть тысячи наборов данных, из которых я заинтересован в извлечении года, предшествующего месяцу. Например:
В наборе данных 1: сентябрь 1980
В наборе данных 2: октябрь 1978
Регулярное выражение, которое я написал с использованием https://regex101.com/ :
^(?<month>)\w+(\1)\s[0-9]{4}$|(^(?<fmonth>)\w+,\s[0-9]{4}$)
Это делает работу, используя ссылку. Однако, когда я пытался использовать его в своем коде python, я получал следующую ошибку:
File "<ipython-input-216-a995358d0957>", line 1, in <module>
runfile('C:/Users/Muntabir/nltk_data/corpora/cookbook/clean_data/text-classification_year(clean).py', wdir='C:/Users/Muntabir/nltk_data/corpora/cookbook/clean_data')
File "C:\Users\Muntabir\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\Muntabir\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Muntabir/nltk_data/corpora/cookbook/clean_data/text-classification_year(clean).py", line 76, in <module>
year_data = re.findall('^(?<month>)\w+(\1)\s[0-9]{4}$|(^(?<fmonth>)\w+,\s[0-9]{4}$)', tokenized_string)
File "C:\Users\Muntabir\Anaconda3\lib\re.py", line 222, in findall
return _compile(pattern, flags).findall(string)
File "C:\Users\Muntabir\Anaconda3\lib\re.py", line 301, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Users\Muntabir\Anaconda3\lib\sre_compile.py", line 562, in compile
p = sre_parse.parse(p, flags)
File "C:\Users\Muntabir\Anaconda3\lib\sre_parse.py", line 855, in parse
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
File "C:\Users\Muntabir\Anaconda3\lib\sre_parse.py", line 416, in _parse_sub
not nested and not items))
File "C:\Users\Muntabir\Anaconda3\lib\sre_parse.py", line 691, in _parse
len(char) + 2)
error: unknown extension ?<m
Я не уверен, почему она вызывает эту ошибку. Кто-нибудь может дать мне объяснение с возможным решением? Ваша помощь будет высоко ценится.
Спасибо