Saya memiliki perintah bash untuk dijalankan yang saya tetapkan ke variabel. Perintah yang akan dijalankan adalah:
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
Saya dapat mencetaknya di python3, sebagai:
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
Namun, ketika saya menetapkan nilai yang sama ke variabel:
a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
Saya mendapatkan yang berikut:
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''
Perhatikan \
di output.
Saya berharap untuk mencapai hasil yang diinginkan (yang dilakukan dalam pernyataan print
) menggunakan penetapan variabel.
2 jawaban
Lihat ini,
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
Di sini, Anda melihat \
karena ia mencetak literal string dalam tanda kutip tunggal.
>>> a
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''
Jika Anda mencetak variabel, itu akan terlihat normal seperti yang Anda butuhkan.
>>> print(a)
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
Kedua string itu persis sama. Anda dapat mengamatinya jika Anda menjalankan kedua perintah pada IDE, atau melalui terminal menggunakan python script.py
print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
print(a)
Outputnya akan menjadi
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
Hanya saja Python menambahkan garis miring terbalik tambahan di sekitar tanda kutip tunggal karena kita juga memiliki tanda kutip ganda dalam string, dan garis miring terbalik menghindari tanda kutip tunggal untuk memberikan representasi string yang dapat dicetak
>>> print("papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}'))
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a= "papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{}'".format('{"aviral":"srivastava"}')
>>> print(a)
papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y '{"aviral":"srivastava"}'
>>> a
'papermill athena-py/params_to_dict.ipynb athena-py/output_params_to_dict.ipynb -y \'{"aviral":"srivastava"}\''
Pada dasarnya string yang lolos adalah representasi repr
dari string
Dari dokumen: https://docs.python.org/3/library/ function.html#repr
repr(objek)
Kembalikan string yang berisi representasi objek yang dapat dicetak