Строка PyCharm заменяет "\" - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть сообщение трассировки, как:

_str = ['exec(\'g.\'+option_val+\'=\'+option_val+\'()\')\n', '  File "<string>", line 1, in <module>\n', '  File "/home/nazariy/git/investment-tools/app/core/utilities/dbmonet.py", line 16, in __init__\n    raise ValueError(\'Could not connect to the MonetDB database\')\n', 'ValueError: Could not connect to the MonetDB database\n']

Я пытаюсь заменить каждый случай на "Пихарм":

_str = [str_.replace("\'",'"') for str_ in _str]

вышеописанное не работает, по какой-то причине оно разбивает каждый отдельный символ. Но вышесказанное работает в jupyter qtconsole ...

Я также пытался экранировать escape-символ в Pycharm:

_str = [str_.replace("\\'",'"') for str_ in _str]

тоже не работает ...

есть идеи? Спасибо

EDIT:

Вот фрагмент кода, который генерирует трассировку:

import sys, traceback
exc_type, exc_value, exc_traceback = sys.exc_info()
pretty_traceback = repr(traceback.format_exception(exc_type, exc_value, exc_traceback))
#print("---- All the items ---")
#for i, x in enumerate(pretty_traceback): print(str(i) + ": "+(x))
print("------------------------- before pretty -----------------------")
pretty_traceback = [i.replace(r"\'", '"') for i in pretty_traceback]
print(pretty_traceback)
print("------------------------ pretty escape -------------------")
pretty_traceback = [i.replace(r"\n", "") for i in pretty_traceback]
print(pretty_traceback)
print("------------------------ pretty replace -------------------")
pretty_traceback = ["<p>"+_str+"</p>"       for _str in pretty_traceback]
print(pretty_traceback)

1 Ответ

0 голосов
/ 25 апреля 2018

Использование Regex

Ex:

import re
_str = ['exec(\'g.\'+option_val+\'=\'+option_val+\'()\')\n', '  File "<string>", line 1, in <module>\n', '  File "/home/nazariy/git/investment-tools/app/core/utilities/dbmonet.py", line 16, in __init__\n    raise ValueError(\'Could not connect to the MonetDB database\')\n', 'ValueError: Could not connect to the MonetDB database\n']
_str = [re.sub(r"\'", '"', i) for i in _str]
print(_str)

Выход:

['exec("g."+option_val+"="+option_val+"()")\n', '  File "<string>", line 1, in <module>\n', '  File "/home/nazariy/git/investment-tools/app/core/utilities/dbmonet.py", line 16, in __init__\n    raise ValueError("Could not connect to the MonetDB database")\n', 'ValueError: Could not connect to the MonetDB database\n']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...