import re
regex = re.compile(r"""
(?: ([^";\r\n]*) #1 value without quotes or
| \x20* ("(?:[^"]+|"")*") \x20* #2 value inside quotes
)
(?: (;) #3 values delimiter or
| [\r\n]+ # rows delimiter
)
""", flags=re.DOTALL | re.VERBOSE)
test_str = ("501 ; 8300000000000 ; \";Автономный ;\"\";округ\"\"\n"
" \"\"Ненецкий\"\";\";test1\n"
" 751;8600800000000; \" Автономный округ \"\"Ханты-Мансийский\"\", Район Советский\" ;\n"
" 1755;8700300000000;Автономный округ Чукотский, Район Билибинский\n"
" 1725;7501900000000;Край Забайкальский, Район Петровск-Забайкальский\n\n"
" ;;\n"
" 711;2302100000000;Край Краснодарский, Район Лабинский\n"
" 729;2401600000000;Край Красноярский, Район Иланский\n"
" 765;2700700000000;Край Хабаровский, Район Вяземский")
subst = "\\1\\2\\x01\\3\\x02"
result = regex.sub(subst, test_str)
if result:
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html