国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python expandtabs()函數的使用

2023-04-26 12:04:41
字體:
來源:轉載
供稿:網友

Python中expandtabs()函數的作用是允許用戶自定義(擴展)字符串中 '/t' 字符輸出的空格數量。在Python中TAB制表鍵字符輸出的空格數量默認為8。該函數在處理輸出的空格數量時會把tab字符前邊的字符數考慮進去。也就是說實際輸出的空格數量是給定的tab的尺寸減去tab鍵前面的字符數量。

一、expandtabs()函數的語法格式

str.expandtabs(tabsize = 8)

str:待處理的字符串

參數:tabsize,指定tab的尺寸,默認為8個空白字符。

返回值:返回處理后的字符串。

二、expandtabs()函數使用示例

1、參數使用默認值

str1 = "R/tC#/tPHP/tPython"
print(str1)
res1 = str1.expandtabs()
print(res1)

輸出結果:

R       C#      PHP     Python
R       C#      PHP     Python

因為Python中tab的默認值為8,所有兩者輸出是相同的。

2、正常使用參數

str1 = "A/tBC/tDEF/tGHI"
print(str1)
res1  = str1.expandtabs(10)
print(res1)
res2 = str1.expandtabs(6)
print(res2)

輸出結果:

A       BC      DEF     GHI
A         BC        DEF       GHI
A     BC    DEF   GHI

在上面的輸出結果中第一行實際上默認使用的TAB的尺寸是8;

第二行,A和BC之間有9個空格,因為在第一個/t前有一個字母,所以10 -1 = 9,在BC和DEF之間有8個空格,因為在第2個/t前有兩個字母,10 -2 = 8;同理,在DEF和GHI之間應有7個空格。

用同樣的算法,可以推出第三行的A和BC之間應有6 -1 = 5個空格,BC和DEF之間應有 6 - 2 = 4個空格 ,DEF和GHI之間應有6 -3 = 3個空格。

另外,需要說明的是,/t前面的字符中有空格時,毫無疑問,空格也會作為字符計算在內,看下面的例子:

str1 = "Python is easy./tPython!"
print(str1)
print(str1.expandtabs(16))
print(str1.expandtabs(18))

輸出結果:

Python is easy. Python!
Python is easy. Python!
Python is easy.   Python!

因為str1本身有15個字符(含空格),所以tabsize為16時,實際上/t被處理成1(16-15=1)個空格,當為18時,/t被處理成3個空格(18-15 = 3)。而第1行的輸出中間也有一個空格,這是怎么回事呢?(請繼續看下面的內容。)

3、/t前面的字符多于指定的tabsize情況

在這種情況下,可以認為Python中expandtabs()函數按如下規則進行處理:

tabsize * n - m > 0 (m為/t前面的字符數量)

也就是說,指定的tabsize數乘以一個大于0的數后減去/t前面的字符數量的結果值需大于0,即至少有一個空白符。見下面的例子:

str1 = "PythonPython/tR"
print(str1.expandtabs(6))
print(str1.expandtabs(7))
print(str1.expandtabs(8))
print(str1.expandtabs(9))

輸出結果:

PythonPython      R
PythonPython  R
PythonPython    R
PythonPython      R

因為/t前面有12個字符,第1個 6 * 3 - 12 = 6 ,所以第1個輸出了6個空格,第2個 7*2 - 12 =2 ,所以第2個有2個空格,按照這樣的規則,第3個有 4 個空格,第4個有6個空格。

4、多個/t連續出現的情況

有時字符串中連著有多個/t情況,或者出現換行符/n的情況,這時,Python的expandtabs函數是如何處理的呢?

str1 = "C/tC#/t/tC++/t/nJava/tPython"
print(str1)
res1 = str1.expandtabs(12)
print(res1)

輸出結果:

C       C#              C++     
Java    Python
C           C#                      C++         
Java        Python

從上面輸出結果中,通過數空格數,可以知道,在連續的/t中,緊挨字符的/t是輸出減去前面字符數的空格數,而第2個/t會原樣輸出tab鍵規定數量的空格。注意:/t前面的/r,/n不會被當作一個字符來處理。

5、參數小于等于0或無效

如果tabsize參數指定為0或負數,甚至是小數會出現什么情況呢?看下面的例子:

>>> str1 = "武林網VEVB/twww.survivalescaperooms.com"
>>> print(str1.expandtabs()) # 中間會有1個空格
武林網VEVB www.survivalescaperooms.com
>>> print(str1.expandtabs(0)) # 輸出中間會沒有空格
武林網VEVBwww.survivalescaperooms.com
>>> print(str1.expandtabs(-4))
武林網VEVBwww.survivalescaperooms.com
>>> print(str1.expandtabs(-8))
武林網VEVBwww.survivalescaperooms.com
>>> print(str1.expandtabs(2.3)) # 將導致TypeError錯誤:參數類型錯誤
Traceback (most recent call last):
    File "<pyshell#27>", line 1, in <module>
        print(str1.expandtabs(2.3))
TypeError: integer argument expected, got float

>>>

從以上輸出情況可以看出,expandtabs()函數把負數一律按0來處理,即不輸出空格,而給一個非整數參數時,將導致語法錯誤。

Python expandtabs函數

本文(完)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳信县| 镇远县| 怀集县| 富民县| 抚宁县| 新蔡县| 新龙县| 内黄县| 霞浦县| 丹棱县| 武强县| 黔江区| 斗六市| 浑源县| 东丽区| 抚顺县| 大田县| 聊城市| 甘谷县| 延川县| 平远县| 余姚市| 龙海市| 恩施市| 肇东市| 石景山区| 元朗区| 北碚区| 广西| 普定县| 文水县| 加查县| 和田市| 左云县| 达日县| 永善县| 桂平市| 龙川县| 涞水县| 五常市| 左云县|