Python 3.2 - поведение конкатенации и форматирования строк не работает должным образом - PullRequest
6 голосов
/ 06 июня 2011

Я хочу создать переменную «полное имя файла» из нескольких других переменных, но операции конкатенации строк и форматирования строк работают не так, как я ожидаю.

Мой код ниже:

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("")

Вывод при запуске сценария:

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

Я ожидал, что он объединит ".txt" всамый конец, за исключением того, что он заменяет собой первые четыре символа строки вместо него.

Как объединить переменную расширения с концом строки вместо того, чтобы заменить первые n символов строки?

В дополнение к тому, как решить эту конкретную проблему, я хотел бы знать, почему я столкнулся с ней в первую очередь.Что я сделал не так / о каком поведении Python 3.2 я не знаю?

Ответы [ 2 ]

8 голосов
/ 06 июня 2011

Я думаю, что метод ввода, используемый в вашем примере, примерно так:

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

может возвращать символ возврата каретки в конце.
Это заставляет курсор вернуться к началулиния, когда вы пытаетесь распечатать его.Вы можете обрезать возвращаемое значение input ().

3 голосов
/ 06 июня 2011

Используйте эту строку, чтобы избавиться от перевода строки:

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