2016-04-09 6 views
0

Bir dizenin sonuna bir değişken için bir dize değeri eklemeye çalışıyorum. Eksik bir kapanış teklifi alıyorum.Python dize birleştirme yolu için değişken ekleme doğru sözdizimi eksik kapanış teklifi hatası eksik

Benim Python snippet'tir:

from Utilities.HelperMethods import read_from_file 

class DataCategoriesPage_TestCase(BaseTestCase): 
    def test_00001_add_data_categories(self): 
     project_name = read_from_file("project_name") 
     administration_page.enter_location_for_export(r"\\STORAGE-1\Testing\Test Data\ClearCore\Exports\5\" + project_name) 

doğru sözdizimi nedir?

değişken proje adı değeri "selenium_regression_project_09/04/2016"

Ben, Sen \ ile değişmez bir ham dize bitemez \\STORAGE-1\Testing\Test Data\ClearCore\Exports\5\

cevap

3

dize yolunun sonuna eklemek bu bir nedeni istiyoruz olduğu ters eğik çizgi hala bir alıntıdan kaçmak için kullanılabilir. Aktaran string literal documentation (ham dize hazır üzerindeki bölümünden):

Dize tırnak yerde ters eğik çizgi, ancak ters eğik çizgi dize kalır; Örneğin, r"\"", iki karakterden oluşan geçerli bir dizgi hazırlamasıdır: ters eğik çizgi ve çift tırnak işareti; r"\" geçerli bir dize değişmezi (bir ham dize bile tek sayıda ters eğik çizgi ile bitemez). Özellikle, bir ham dize, tek bir ters eğik çizgi içinde bitemez (ters eğik çizgi, aşağıdaki alıntı karakterinden kaçar).

Bu dosya yolu gibi göründüğünü, bu nedenle dosya yolu parçaları birleştirmek için os.path.join() kullanın: çiğ dize artık şimdi sonunda ters eğik çizgi gerektiğini

import os.path 

administration_page.enter_location_for_export(
    os.path.join(
     r"\\STORAGE-1\Testing\Test Data\ClearCore\Exports\5", 
     project_name)) 

Not.

+0

Bunun nedeni, ters eğik çizgi kapanış tırnaklarından kaçıyor olmasıdır – Signal

+0

Yardımlarınız için teşekkürler. Şimdi anladım. –

0

Görünüşe göre, bir ham dizgeyi ters eğik çizgi ile sonlandıramazsınız - bu, son tırnak işaretinden kaçacaktır. (Bug?). Deneyin:

r"\\STORAGE-1\Testing\Test Data\ClearCore\Exports\5" + "\\" + project_name 
+0

Bu bir hata değil, kasıtlı bir tasarım kararı. Bu, dizgeye bir alıntı gömerek geri kaçarak geri gömebilirsiniz. –

+0

Anladım. Teşekkürler :) – Jefinthejam

1

Martijn Peters sorununuza (os.path.join kullanın) için doğru cevap vermiş, ancak orada yüzden yazmak istiyorum arka eğik çizgi sürü (ile bir değişmez sahip sorununa bir çözüm olduğunu bir ham harfle), bir eğik çizgi ile biter. Çözüm, çoğunu ham bir edebi olarak yazmak, ancak arkadaki ardı ardına sıradan (kaçmış) bir editör olarak yazmaktır. Python, iki bitişik dize değişmezini bire birleştirir.

r"\\STORAGE-1\Testing\Test Data\ClearCore\Exports\5" "\\" 

Bu programlar sayesinde diğer bazı ağır kod arka çizgi yazma birine yararlı olabilir (örneğin düzenli ifadeler): Yani sizin durumda, literal olarak yazılabilir olacaktır.