Команда sed в Python с использованием json .dumps строки в кавычках не сохраняет одинарную кавычку - PullRequest
0 голосов
/ 09 апреля 2020

Извините, если заголовок немного запутанный ... Пример лучше покажет, что я имею в виду:

У меня есть текстовый файл с именем foo, содержащий строку 'bar'.

В Python у меня есть словарь:

d = {"key": "item['id']"}

Я хочу заменить строку строк в моем файле на json дамп моего словаря. Команды:

import subprocess
subprocess.call("sed 's#bar#%s#g' foo > foo2" % json.dumps(d),shell=True)

Когда я котирую файл foo2, результат:

> cat foo2
{"key": "item[id]"}

Проблема в том, что одинарные кавычки теряются вокруг идентификатора. Как я могу избежать этого?

1 Ответ

0 голосов
/ 11 апреля 2020

Как подсказал @Shawn, я сделал все это в Python с функцией "python sed", основанной на re.sub:

def psed(foo,bar,source,dest):
    """
    implements a python sed, substituting (with multi-line mode) foo for bar 
    in file source, writing the result in file dest
    """
    with open(source,'r') as f:
        content = f.read()
    f.close()
    content_new = re.sub(foo,bar,content,flags=re.M)

    with open(dest,'w') as f:
        f.write(content_new)
    f.close()
...