5

Diğer değişkenlerden bir "tam dosya adı" değişkeni oluşturmak istiyorum, ancak dize birleştirme ve dize biçimi işlemleri beklediğim gibi davranmıyor.Python 3.2 - Birleştirme ve dize biçimlendirme davranışı beklendiği gibi davranmıyor

Benim kod aşağıda:

file_date = str(input("Enter file date: ")) 

root_folder = "\\\\SERVER\\FOLDER\\" 
file_prefix = "sample_file_" 
file_extension = ".txt" 

print("") 
print("Full file name with concatenation: ") 
print(root_folder + file_prefix + file_date + file_extension) 
print("Full file name with concatenation, without file_extension: ") 
print(root_folder + file_prefix + file_date) 
print("") 

print("") 
print("Full file name with string formatting: ") 
print("%s%s%s%s" % (root_folder, file_prefix, file_date, file_extension)) 
print("Full file name with string formatting, without file_extension: ") 
print("%s%s%s" % (root_folder, file_prefix, file_date)) 
print("") 

çıktı ben script çalıştırdığınızda:

C:\Temp>python test.py 
Enter file date: QT1 

Full file name with concatenation: 
.txtRVER\FOLDER\sample_file_QT1 
Full file name with concatenation, without file_extension: 
\\SERVER\FOLDER\sample_file_QT1 


Full file name with string formatting: 
.txtRVER\FOLDER\sample_file_QT1 
Full file name with string formatting, without file_extension: 
\\SERVER\FOLDER\sample_file_QT1 

öyle haricinde ben, en sonunda ".txt" bitiştirmek bekliyordum bunun yerine dizenin ilk dört karakterini değiştirmek yerine.

Dizinin ilk n karakterlerini değiştirmek yerine, uzantı değişkenini dizenin sonuna kadar nasıl ekleyebilirim?

Bu özel problemin nasıl çözüleceğine ek olarak, ilk başta neden buna rastladığımı bilmek isterim. Neyi yanlış yaptım/Python 3.2 davranışının farkında değil miyim?

cevap

8

Ben senin örnekte kullanılan yöntem girişi, şöyle düşünüyorum:

file_date = str(input("Enter file date: ")) 

sonunda bir satırbaşı karakteri döndürülüyor olabilir.
Bu, imlecin yazdırmaya çalıştığınızda satırın başına gitmesine neden olur. Girdi() dönüş değerini kırpmak isteyebilirsiniz.

+0

Onaylandı. OP'nin kodunu çalıştırdıktan sonra 'repr (file_date)' 'QT1 \ r'' –

+0

Bu basit bir şey olduğunu hissettim. Satır besleme yerine "\ r" satırına bir satır dönüşü ekliyordu, ama beni doğru yönde yönlendirmeye yardım ettiniz. Teşekkürler! – tgxiii

+3

Python 3'te, giriş bir dizge döndürür, bu nedenle str'yi kullanmaya gerek yoktur. – MRAB

3

Kullanım yerine satır besleme kurtulmak için bu satırı:

file_date = str(input("Enter file date: ")).rstrip() 
İlgili konular