%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])
%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])
這是一個字符串格式化語法(它由C借用)。
Python支持的格式值到 字符串。雖然這可能包含非常複雜的表達式,但最基本的用法是使用
%s
佔位符將值插入 字符串。
編輯:這是一個非常簡單的例子:
name = raw_input("who are you?")
print "hello %s" % (name,)
的%s
令牌允許我插入(和潛在的格式)的字符串。請注意,%s
標記被替換爲我在%
符號後傳遞給字符串的任何東西。還要注意,我在這裏也使用了一個元組(當你只有一個使用元組的字符串是可選的)來說明可以在一個語句中插入和格式化多個字符串。
'%s'表示使用python的字符串格式化功能時'string'的轉換類型。更具體地說,'%s'使用str()函數將指定的值轉換爲字符串。將此與使用repr()函數進行值轉換的'%r'轉換類型進行比較。
看看以下內容: http://docs.python.org/library/stdtypes.html#string-formatting-operations
在回答你的第二個問題:這是什麼代碼做...
這是相當標準的Python腳本錯誤檢查的代碼是什麼?接受命令行參數。
因此,第一個if
聲明轉換爲:如果您沒有通過我一個參數,我會告訴您未來應如何通過我一個參數,例如,你會看到這個屏幕:
Usage: myscript.py database-name
下if
語句檢查,看看是否傳遞給腳本的「數據庫名稱」上的文件系統確實存在。如果沒有,你會得到這樣的消息:
ERROR: Database database-name was not found!
的argv [0]是腳本的名稱(這是 依賴操作系統,這是否 是一個完整的路徑名或不)。如果 該命令是使用-c 命令行選項執行到 解釋器,則argv [0]設置爲 字符串'-c'。如果沒有將腳本名稱 傳遞給Python解釋器,則 argv [0]是空字符串。
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
的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'
%s被稱爲格式說明符,專門用於字符串。由於在本書中關於數據類型 的討論繼續進行,您可以再看看幾種,每種都針對其給定的數據類型。 每個說明符都充當字符串中該類型的佔位符;並在字符串之後,該字符串的 之外的%符號表示在此之後,要插入到格式說明符中的所有值將爲 ,並顯示在此字符串中以供使用。 您可能會注意到括號。這告訴字符串,它應該期望看到一個序列,該序列包含要由字符串用來填充其格式說明符的值。 想象它的一個更簡單的方法是想象%s是一個儲存箱,它將括號中的值保存在 括號內。如果你想要做多個值,你可以簡單地用這種方式添加另一個格式說明符 :
「>>>」John「s%s」%(「Every」,「Man」)
John Everyman '
'%`運算符不推薦使用更強大的`str.format`方法,請參見[PEP-3101](http://docs.python.org/3.1/whatsnew/2.6.html#pep -3101) – 2013-07-17 17:37:13
實際上,PEP表示「在Python 3.0中,%運算符由一個更強大的字符串格式化方法進行補充」,並且它被反向移植到Python 2.6中,我來自「補充」意味着添加到,而不是替換。 PEP並沒有說「被取代」,並且在PEP的任何部分都沒有說過%操作符被棄用(但它確實說其他的東西已經被棄用)底下你可能更喜歡str.format這很好,但是直到有一個PEP說它被棄用時,沒有理由聲稱它不是。 – Ben 2013-10-29 08:07:45