Bagaimana cara menulis string literal dengan python tanpa harus menghindarinya?


98

Apakah ada cara untuk mendeklarasikan variabel string dalam python sehingga semua yang ada di dalamnya secara otomatis di-escape, atau memiliki nilai karakter literal?

Saya tidak bertanya bagaimana cara menghindar dari tanda kutip dengan garis miring, itu jelas. Apa yang saya minta adalah cara tujuan umum untuk membuat semuanya dalam string literal sehingga saya tidak harus secara manual melalui dan melarikan diri semuanya untuk string yang sangat besar. Ada yang tahu solusinya? Terima kasih!

Jawaban:



71

Jika Anda berurusan dengan string yang sangat besar, khususnya string multiline, perhatikan sintaks kutip tiga :

a = r"""This is a multiline string
with more than one line
in the source code."""

1
Apakah konstruksi ini memperkenalkan karakter baris baru? Artinya, variabel aakan berisi string dengan dua karakter pemisah baris?
MadPhysicist

7
@MadPhysicist: Ya, string yang dihasilkan akan berisi dua baris baru dalam kasus di atas.
Greg Hewgill

Dimengerti. Dan jika 'split ()' digunakan pada string ini, apakah itu akan dipisahkan menurut garis secara default?
MadPhysicist

1
@MadPhysicist Default untuk .split () adalah untuk memisahkan dengan spasi, dan baris baru adalah spasi.
Greg Hewgill

1
Saya telah menggunakan ini sebelumnya dan berfungsi dengan baik. Dua hal yang harus diperhatikan: lekukan (spasi) di baris lain disertakan yang diinginkan; jika string panjang kebetulan diakhiri dengan "tidak baik, karena semuanya akan berakhir dengan """" kesalahan sintaksis.
Nagev

9

Tidak ada hal seperti itu. Sepertinya Anda menginginkan sesuatu seperti "di sini dokumen" di Perl dan cangkang, tetapi Python tidak memilikinya.

Menggunakan string mentah atau string multiline berarti lebih sedikit hal yang perlu dikhawatirkan. Jika Anda menggunakan string mentah, Anda masih harus bekerja di sekitar terminal "\" dan dengan solusi string apa pun Anda harus khawatir tentang penutupan ", ',' '' atau" "" jika disertakan dalam data Anda .

Artinya, tidak ada cara untuk memiliki string tersebut

 '   ''' """  " \

disimpan dengan benar dalam literal string Python apa pun tanpa pelolosan internal apa pun.



1

(Dengan asumsi Anda tidak perlu memasukkan string langsung dari dalam kode Python)

untuk mengatasi Masalah yang ditunjukkan Andrew Dalke, cukup ketik string literal ke dalam file teks dan kemudian gunakan ini;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open   = open(input_,'r+')
input_string = input_open.read()

print input_string

Ini akan mencetak teks literal dari apa pun yang ada di file teks, meskipun itu;

 '   ''' """   \

Tidak menyenangkan atau optimal, tetapi dapat berguna, terutama jika Anda memiliki 3 halaman kode yang memerlukan pelolosan karakter.


-1

jika string adalah variabel, gunakan. metode repr di atasnya:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'

Bukankah itu dianggap gaya yang buruk?
shah.shah

apa, ketimun?
markling

1
Anda dapat menggunakan repr(s)sebagai gantinya untuk gaya yang lebih baik
xuiqzy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.