escape-последовательность с для комбинации и ’ в python

#python #escaping #sequence

#python #экранирование #последовательность

Вопрос:

Я хотел бы иметь в файле g текст типа

 stat.run('Export RStd 'distFunc.txt' overwrite')
  

Я использую варианты

 g.write("stat.run('Export RStd  ")
g.write("'distFunc.txt")
g.write("' overwrite')n")
  

однако из-за escape-последовательности и ‘ код не работает. Я перепробовал множество вариантов, и одна строка была невозможна для меня. Итак, я попытался разделить ее на три строки и проанализировать, но все равно эта escape-последовательность проблематична!
Кто-нибудь может предложить способ сделать это?
с уважением

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

1. «код не работает» . Итак, вы получаете сообщение об ошибке или …?

2. просто сделайте stat.run("Export RStd 'distFunc.txt' overwrite") вам не придется экранировать кавычки с помощью двойных кавычек.

Ответ №1:

Используйте необработанную строку (с префиксом r ) и тройные кавычки (последовательность из трех ' или " символов подряд). Внутри необработанной строки обратная косая черта не является волшебной. Внутри строки, заключенной в тройные кавычки, ни одинарные, ни двойные кавычки не являются волшебными. Следующие две полные программы эквивалентны:

 with open ("g", "w") as g:
    g.write(r'''stat.run('Export RStd 'distFunc.txt' overwrite')''')
  
 with open ("g", "w") as g:
    g.write(r"""stat.run('Export RStd 'distFunc.txt' overwrite')""")
  

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

 with open ("g", "w") as g:
    g.write(r"stat.run('Export RStd 'distFunc.txt' overwrite')")
  

Или, если вы не хотите использовать необработанные строки, вы можете экранировать обратную косую черту:

 with open ("g", "w") as g:
    g.write("stat.run('Export RStd \'distFunc.txt\' overwrite')")
  

Наконец, если вам необходимо использовать строку, заключенную в одинарные кавычки, вы можете экранировать одинарные кавычки:

 with open ("g", "w") as g:
    g.write('stat.run('Export RStd \'distFunc.txt\' overwrite')')
  

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

 assert (
    r'''stat.run('Export RStd 'distFunc.txt' overwrite')''' ==
    r"""stat.run('Export RStd 'distFunc.txt' overwrite')""" ==
    r"stat.run('Export RStd 'distFunc.txt' overwrite')" ==
    "stat.run('Export RStd \'distFunc.txt\' overwrite')" ==
    'stat.run('Export RStd \'distFunc.txt\' overwrite')')
  

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

1. не могли бы вы, пожалуйста, немного объяснить это? это было бы полезно для последующих реализаций. С уважением!