2017-02-24 38 views
-1

我對Python很陌生,想知道是否有人可以在引用字符串時解釋字符串格式中的所有不同字母。恩!我已經看到%s以及其他字母,如%f我認爲。我只是想,如果有人能解釋所有不同的字母是什麼意思,以及是否有其他的我錯過了。Python中的所有字符串格式是什麼?

+0

閱讀關於它在這裏:https://www.tutorialspoint.com/python/python_strings.htm – Sam

+0

也檢查出https://pyformat.info/,有關新舊方式的很好的信息(但遺憾地錯過了最新的Python 3.6 f-字符串)。 –

回答

0

Here's有關Python中字符串格式的綜合指南。本教程涵蓋了Python的2.7,3.2,3.3,3.4和3.5版本,即幾乎所有版本。

1

您指的是Python的字符串格式化操作,百分比(%)標誌。您可能知道,您可以使用此運算符將不同的值或名稱插入到字符串中。您所看到的字母,例如您提到的%s%f是運營商的類型轉換器。他們讓你指定你插入什麼類型的值或名稱。該%s表示是字符串值和%f代表浮點數

例如,假設你想要寫的確認用於登錄到AA網站,用用戶名印以確認它們是用戶登錄到正確的帳戶。

你可以做這樣的事情:

>>> username = 'Samus' 
# login code... 
# upon successful login... 
>>> print("You have successfully logged in as %s." % (username)) 
You have successfully logged in as Samus. 

如果你試圖用%d,它代表一個十進制整數同樣的例子,而不是%s,它會失敗,並TypeError,爲您指定的值作爲數字插入,但您提供了一個字符串('Samus')。這意味着必須正確地指定在每一個傳遞值

這裏是共同轉換器的短列表:
1%S - 串轉換經由STR()之前的格式化
2.%d - 符號十進制整數
3.%× - 十六進制整數(小寫字母)
4.%E - 指數表示法(用小寫的 'e')
5.%的F - 浮點實數

(對於完整列表和更多選項,請參閱this page

最後,我應該注意,這是我的理解,現在Python中這種字符串格式化/插入操作的首選方法是使用.format()方法。

這是非常相似,但不類型轉換運算符%。相反,如果要在字符串中插入值,則需要放置一個大括號({})。

使用上面示例的.format()方法如下將工作:

>>> username = 'Samus' 
# login code... 
# upon successful login... 
>>> print("You have successfully logged in as {}.".format(username)) 
You have successfully logged in as Samus. 

否類型轉換需要的。如果你通過int而不是username,它仍然可以正常工作。
您還可以更好地控制插入值的順序,如下所示。

>>> best_friend = 'Chozo' 
>>> worst_enemy = 'Ridley' 
# The `0` and `1` represent the index in the `.format()` list which to insert from. 
>>> print("I love {0} and hate {1}!".format(best_friend, worst_enemy)) 
I love Chozo and hate Ridley! 

# Reversing the indices in the brackets changes our output without 
# having to reorganize the `.format()` list itself, which is convenient. 
>>> print("I love {1} and hate {0}!".format(best_friend, worst_enemy)) 
I love Ridley and hate Chozo! 

如果您使用索引值是超出範圍的.format()列表您提供,如"I love {9} ...,你會得到熟悉的IndexError: tuple index out of range,因爲.format()名單隻有兩個條目,在指數01 。最後,您還可以在大括號內實際使用變量(對象)名稱,以便爲您提供對顯示值順序的特定控制,而不管它們在列表中的順序或索引範圍。例如:

>>> rid = 'Ridley' 
>>> cho = 'Chozo' 
>>> print("{r} is first, {c} is second!".format(r=rid, c=cho)) 
Ridley is first, Chozo is second! 

# flip them inside the `.format()` assignment, flips output: 
>>> print("{r} is first, {c} is second!".format(r=cho, c=rid)) 
Chozo is first, Ridley is second! 

這可以讓您在處理很多值時儘可能的明確。如果您未能爲變量/對象賦值,您將得到一個NameErrorKeyError,具體取決於您遺漏的部分(對象名稱或插入變量名稱)。

由於您剛剛接觸Python,所以聰明的做法就是使用.format()方法繼續前進。

相關問題