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.

0
Aviral Srivastava 29 Mei 2019, 08:19

2 jawaban

Jawaban Terbaik

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"}'
1
shaik moeed 29 Mei 2019, 05:32

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

1
Devesh Kumar Singh 29 Mei 2019, 06:00