Парсинг текста с помощью re и перевод этого в словарь
У меня есть вот такая фунцкия
def parse_sql_info(text):
result = re.findall(r"^\|\s*([^|\s]+)\s*\|\s*([^|\s]+|\s)\s*\|$", text, flags=re.MULTILINE)
return dict(result)
Она работает если придет вот такой текст:
RESULT_PASSWORD = '''+-----------------------------------------+------------+
| Variable_name | Value |
+-----------------------------------------+------------+
| default_password_lifetime | 0 |
| disconnect_on_expired_password | OFF |
| max_password_errors | 4294967295 |
| old_passwords | OFF |
| report_password | |
| simple_password_check_digits | 1 |
| simple_password_check_letters_same_case | 4 |
| simple_password_check_minimal_length | 10 |
| simple_password_check_other_characters | 1 |
| strict_password_validation | ON |
+-----------------------------------------+------------+'''
А приходит вот такой, где пустые значение именно пустые, а не пробелы:
RESULT_PASSWORD = '''+-----------------------------------------+------------+
| Variable_name | Value |
+-----------------------------------------+------------+
| default_password_lifetime | 0 |
| disconnect_on_expired_password | OFF |
| max_password_errors | 4294967295 |
| old_passwords | OFF |
| report_password ||
| simple_password_check_digits | 1 |
| simple_password_check_letters_same_case | 4 |
| simple_password_check_minimal_length | 10 |
| simple_password_check_other_characters | 1 |
| strict_password_validation | ON |
+-----------------------------------------+------------+'''
Вот какую мне сделать регулярку, чтобы из второго текста получался вот такой словарь ?
test_value = {
'Variable_name': 'Value',
'default_password_lifetime': '0',
'disconnect_on_expired_password': 'OFF',
'max_password_errors': '4294967295',
'old_passwords': 'OFF',
'report_password': '',
'simple_password_check_digits': '1',
'simple_password_check_letters_same_case': '4',
'simple_password_check_minimal_length': '10',
'simple_password_check_other_characters': '1',
'strict_password_validation': 'ON'}