Ошибка Python EOL в функции Exec, которая вычисляется как включающая строку, содержащую кавычку

#python #string #escaping #exec

Вопрос:

Я составляю строку для выполнения, чтобы присвоить значение произвольно глубокой точке в файле json, значения, которые я присваиваю, являются строками, и некоторые из этих строк содержат кавычки, вот где я получаю ошибки.

Я попытался заменить «в строках, которые я назначаю», заключив строку, которую я назначаю, в тройные кавычки и то и другое вместе.

Кроме того, все, что ниже, не начиналось в тройных кавычках, это всего лишь последняя попытка решить эту проблему.

Код

 for index, row in md_csv.iterrows():
    json_ref_string = ''
    for k in row['Path']:
        json_ref_string  = "['"
        json_ref_string  = k
        json_ref_string  ="']"
    my_string ="""jo""" json_ref_string """=""" """"""" str(translated_csv.iloc[index][1]) """""""
    exec(my_string)
 

Ошибка

     File "/Users/maxgreen/opt/anaconda3/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3437, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-244-a1adf20fc0ec>", line 9, in <module>
    exec(my_string)

  File "<string>", line 1
    jo['agreementinfo']="Estoy celebrando este acuerdo en nombre de la parte contratante cuyos detalles he presentado en la página "INFORMACIÓN COMERCIAL", en adelante, el "COMERCIANTE""
                                                                                                                                    ^
SyntaxError: invalid syntax
 

Комментарии:

1. python_object = eval(my_string)?

2. Попробуйте добавить print(my_string) , чтобы увидеть, что вы пытаетесь выполнить.

3. Вероятно, было бы проще, если бы вы использовали необработанную f-строку.

Ответ №1:

Советы от бармара в комментариях работали с использованием строковых литералов