2013-09-26 14 views
5

Bu potansiyel olarak çok kullanışlı piton script buldum, ama daha önce hiç görmedim bu ifadeler geldi: YapamamBilinmeyen piton ifade filename = r '/ yol// dosya için'

inputfilename = r'/path/to/infile' 
outputfilename = r'/path/to/outfile' 

aramak için bir yol bulmak. r'...' ne yapar?

Yardımlarınız için teşekkürler!

+1

Bu "ham bir dizge" see [belgeler] (http://docs.python.org/3.3/library/re.html#raw-string-notation). Genellikle kaçmadan özel karakterler (ör. '\') Yazabiliyordu. – bbayles

+1

r, çıkış sıralarını unutmanızı sağlayan bir ham dizgi hazırlayıcısıdır! http: // stackoverflow.com/questions/3517802/python-raw-literal-string – Vivek

+0

Bu durumda bir fark yaratmıyor, ancak yol ters eğik çizgi varsa, r = – beroe

cevap

5

r'..' dize değiştiricisi '..' dizesinin anlamıyla yorumlanmasını sağlar. Yani, r'My\Path\Without\Escaping', ters eğik çizgi karakterlerinden kaçmasına neden olmadan 'My\Path\Without\Escaping' değerini değerlendirecektir. Önceliği 'My\\Path\\Without\\Escaping' dizgisine eşdeğerdir, ancak ham değiştirici olmadan.

Not: ters eğik bir tek sayı, yani r'Bad\String\Example\' değil ucu, bir doğru dize değildir string.

+2

... bir istisna ile: 'r'My \ Yol \ Olmadan \ Escaping \' 'çalışmıyor. Ham dizgiler bile tek sayıda ters eğik çizgi ile bitmeyebilir. –

+0

@TimPietzcker, teşekkürler, sabit! –

3

Ham dize değişmezi denir. Python String literals documentation göre

:

ters eğik çizgi (\) karakteri böyle yeni satır, ters eğik çizgi kendisi veya tırnak karakteri olarak aksi bir özel anlama sahip karakterler, kaçmak için kullanılır. Dize değişmezleri isteğe bağlı olarak 'r' veya 'R' harfi ile ön eki olabilir; Bu dizelere ham dizeler denir ve ters eğik çizgi dizilerini yorumlamak için farklı kurallar kullanın.

...

bir 'r' ya da 'R' öneki standart C ile kullanılanlara benzer kurallara göre yorumlanır dizeleri dizilerin kaçış mevcut olduğu sürece

0

sadece aracı Python'da işlenmemiş dize. Dize içindeki her şeyin anlamı dize. Örneğin, eğer eğik çizgi eklemek istedim:

string1 = "happy\/cheese" 

Bunu bir kaçış karakteri beri eğik çizgi önünde \ eklemek gerekir. Örneğin, \n yeni bir satır anlamına gelir.

ham dize tutarsanız, o dizede ne olursa olsun özel bir şekilde yorumlanır olmadığından emin olur. Örneğin, string2 = r"\n" yazdıysanız, yalnızca dize olarak "\n" verir ve yeni bir satır olmaz.

Sen here itibaren onlar hakkında daha fazla bilgi edinebilirsiniz.

Şimdi, bu dosya yolları eğik çizgi çok şey var çünkü senin olayda yapılır ve bu kadar çok ters eğik çizgi koymak zorunda kalmamak istiyorum.