Edit3: после операции измените образец строки для двойной обратной косой черты, это проще и не нужно использовать регулярное выражение:
mystring = u'{"baselocaldir":"c:\\tmp\\SrcTmp\\RepManager"}'
test = repr(mystring)[1:-1]
print(test)
# convert to dictionary
my_dict = json.loads(test)
print('dict key "baselocaldir" = ', my_dict["baselocaldir"])
выход:
{"baselocaldir":"c:\\tmp\\SrcTmp\\RepManager"}
dict key "baselocaldir" = c:\tmp\SrcTmp\RepManager
Edit2: очевидно, одного использования repr () недостаточно, поэтому я отредактировал свой ответ, чтобы использовать регулярное выражение и заменить все \
на \\
, вот код:
import re, json
mystring = u'{"baselocaldir":"c:\tmp\SrcTmp\RepManager"}'
test = re.sub(r'(?<=[^\\])\\(?=[^\\])', r'\\\\', repr(mystring)[1:-1])
print(test)
# convert to dictionary
my_dict = json.loads(test)
print('dict key "baselocaldir" = ', my_dict["baselocaldir"])
выход:
{"baselocaldir":"c:\\tmp\\SrcTmp\\RepManager"}
dict key "baselocaldir" = c:\tmp\SrcTmp\RepManager
предыдущий ответ, которого недостаточно
Редактировать:
простой способ преобразования строки в raw - это использование repr()
или "%r"
Вот одношаговое решение, кредиты идут на Nishanth Amuluru и
Джед Александр 9 лет назад:
mystring = u'{"baselocaldir":"c:\tmp\SrcTmp\RepManager"}'
raw_str = "%r"%mystring
rep_str= repr(mystring)
print('original string = ', mystring)
print('Raw string = ', raw_str)
print('rep string = ', rep_str)
выход:
original string = {"baselocaldir":"c: mp\SrcTmp\RepManager"}
Raw string = '{"baselocaldir":"c:\tmp\\SrcTmp\\RepManager"}'
rep string = '{"baselocaldir":"c:\tmp\\SrcTmp\\RepManager"}'