Python'da onlardan kaçmak zorunda kalmadan dize değişmezleri nasıl yazılır?


101

Python'da bir dize değişkenini, içindeki her şeyden otomatik olarak kaçılacak şekilde veya gerçek karakter değerine sahip olacak şekilde bildirmenin bir yolu var mı?

Ben değilim değil bariz olduğunu, slashesle tırnak kaçmayı nasıl soran. İstediğim şey, her şeyi bir dizgide değişmez hale getirmenin genel amaçlı bir yolu, böylece çok büyük dizeler için manuel olarak geçip her şeyden kaçmak zorunda kalmayayım. Bir çözüm bilen var mı? Teşekkürler!

Yanıtlar:



72

Çok büyük dizelerle, özellikle çok satırlı dizelerle uğraşıyorsanız, üçlü tırnak sözdizimine dikkat edin:

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

1
Bu yapı satır sonu karakterleri sunuyor mu? Yani, değişken aiki satır sonu karakterli bir dize içerecek mi?
MadPhysicist

7
@MadPhysicist: Evet, ortaya çıkan dize yukarıdaki durumda iki yeni satır içerecektir.
Greg Hewgill

Anladım. Ve bu dizede bir 'split ()' kullanılırsa, varsayılan olarak satırlara bölünür mü?
MadPhysicist

1
@MadPhysicist .split () için varsayılan, beyaz boşlukla bölmektir ve satırsonları beyaz boşluktur.
Greg Hewgill

1
Bunu daha önce kullandım ve iyi çalışıyor. Dikkat edilmesi gereken iki şey vardır: diğer satırlarda istenen girinti (boşluklar) dahildir; eğer uzun dizge "iyi olmadan sonlandırılırsa , çünkü her şey """" bir sözdizimi hatasıyla sonuçlanacaktır.
Nagev

9

Öyle bir şey yok. Perl ve kabuklarda "burada belgeler" gibi bir şey istiyorsunuz gibi görünüyor, ancak Python'da buna sahip değil.

Ham dizeleri veya çok satırlı dizeleri kullanmak yalnızca endişelenecek daha az şey olduğu anlamına gelir. Ham bir dize kullanıyorsanız, yine de bir "\" terminali etrafında çalışmanız gerekir ve herhangi bir dize çözümünde, verilerinizde yer alıyorsa ", ',' '' veya" "" kapanışı hakkında endişelenmeniz gerekir. .

Yani, dizeye sahip olmanın bir yolu yok

 '   ''' """  " \

herhangi bir Python dizesinde bir tür dahili kaçış olmadan düzgün bir şekilde depolanır.



1

(Dizeyi doğrudan Python kodunun içinden girmeniz gerekmediğini varsayarsak)

Andrew Dalke'nin işaret ettiği Sorunun üstesinden gelmek için, değişmez dizeyi bir metin dosyasına yazın ve sonra bunu kullanın;

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

print input_string

Bu, metin dosyasında bulunan her şeyin değişmez metnini, öyle olsa bile yazdıracaktır;

 '   ''' """  “ \

Eğlenceli ya da ideal değil, ancak özellikle karakter kaçması gereken 3 sayfalık kodunuz varsa yararlı olabilir.


-1

dizge bir değişkense,. üzerinde repr yöntemi:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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

Yine de bu kötü bir tarz olarak görülmüyor mu?
shah.shah

Ne, kornişon mu?
markling

1
repr(s)bunun yerine daha iyi bir stil için kullanabilirsiniz
xuiqzy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.