2009-06-15 122 views
113

%s在Python中的含義是什麼?下面的代碼是做什麼的?%s在Python中的含義是什麼?

例如...

if len(sys.argv) < 2: 
    sys.exit('Usage: %s database-name' % sys.argv[0]) 

if not os.path.exists(sys.argv[1]): 
    sys.exit('ERROR: Database %s was not found!' % sys.argv[1]) 
+3

'%`運算符不推薦使用更強大的`str.format`方法,請參見[PEP-3101](http://docs.python.org/3.1/whatsnew/2.6.html#pep -3101) – 2013-07-17 17:37:13

+20

實際上,PEP表示「在Python 3.0中,%運算符由一個更強大的字符串格式化方法進行補充」,並且它被反向移植到Python 2.6中,我來自「補充」意味着添加到,而不是替換。 PEP並沒有說「被取代」,並且在PEP的任何部分都沒有說過%操作符被棄用(但它確實說其他的東西已經被棄用)底下你可能更喜歡str.format這很好,但是直到有一個PEP說它被棄用時,沒有理由聲稱它不是。 – Ben 2013-10-29 08:07:45

回答

138

這是一個字符串格式化語法(它由C借用)。

請參閱"Formatting Strings"

Python支持的格式值到 字符串。雖然這可能包含非常複雜的表達式,但最基本的用法是使用%s佔位符將值插入 字符串。

編輯:這是一個非常簡單的例子:

name = raw_input("who are you?") 
print "hello %s" % (name,) 

%s令牌允許我插入(和潛在的格式)的字符串。請注意,%s標記被替換爲我在%符號後傳遞給字符串的任何東西。還要注意,我在這裏也使用了一個元組(當你只有一個使用元組的字符串是可選的)來說明可以在一個語句中插入和格式化多個字符串。

+0

謝謝你們。很有幫助! – Tyler 2009-06-15 19:12:12

+0

格式化字符串鏈接已經消失 – Sherlock 2012-10-01 14:00:10

5

在回答你的第二個問題:這是什麼代碼做...

這是相當標準的Python腳本錯誤檢查的代碼是什麼?接受命令行參數。

因此,第一個if聲明轉換爲:如果您沒有通過我一個參數,我會告訴您未來應如何通過我一個參數,例如,你會看到這個屏幕:

Usage: myscript.py database-name 

if語句檢查,看看是否傳遞給腳本的「數據庫名稱」上的文件系統確實存在。如果沒有,你會得到這樣的消息:

ERROR: Database database-name was not found! 

documentation

的argv [0]是腳本的名稱(這是 依賴操作系統,這是否 是一個完整的路徑名或不)。如果 該命令是使用-c 命令行選項執行到 解釋器,則argv [0]設置爲 字符串'-c'。如果沒有將腳本名稱 傳遞給Python解釋器,則 argv [0]是空字符串。

75

Andrew的答案很好。

而只是爲了幫助你多一點,這裏是你如何使用多個格式在一個字符串

"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike". 

如果您正在使用int,而不是字符串,使用%d而非%。

"My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12 
16

format方法在Python 2.6中引入的。它更強大並且使用起來並不困難:

>>> "Hello {}, my name is {}".format('john', 'mike') 
'Hello john, my name is mike'. 

>>> "{1}, {0}".format('world', 'Hello') 
'Hello, world' 

>>> "{greeting}, {}".format('world', greeting='Hello') 
'Hello, world' 
2

%s被稱爲格式說明符,專門用於字符串。由於在本書中關於數據類型 的討論繼續進行,您可以再看看幾種,每種都針對其給定的數據類型。 每個說明符都充當字符串中該類型的佔位符;並在字符串之後,該字符串的 之外的%符號表示在此之後,要插入到格式說明符中的所有值將爲 ,並顯示在此字符串中以供使用。 您可能會注意到括號。這告訴字符串,它應該期望看到一個序列,該序列包含要由字符串用來填充其格式說明符的值。 想象它的一個更簡單的方法是想象%s是一個儲存箱,它將括號中的值保存在 括號內。如果你想要做多個值,你可以簡單地用這種方式添加另一個格式說明符 :
「>>>」John「s%s」%(「Every」,「Man」)
John Everyman '

相關問題