文章目錄
- 一、前言
- 二、正則表達式與Python中的實現
- 1.字符串構造
- 2. 字符串截取
- 3. 字符串格式化輸出
- 3.1 %符號格式化字符串
- 1. 一般形式
- 2. 常用格式字符
- 3. 最小寬度和精度
- 4. 進位制和科學計數法
- 5. 多個對象的格式化輸出
- 6. 典例
- 3.2 format()方法格式化字符串
- 1. 一般形式
- 2. 參數傳遞
- 3. 格式控制標記
- 4. 對齊方式
- 3.3 f-string 格式化字符串
一、前言
??自然語言處理涉及字符串構造、截取與格式化輸出等基礎操作,本文將介紹使用%、format()、f-string方法格式化字符串。
二、正則表達式與Python中的實現
1.字符串構造
2. 字符串截取
【自然語言處理】NLP入門(一):1、正則表達式與Python中的實現(1):字符串構造、字符串截取
3. 字符串格式化輸出
??字符串格式化輸出是將變量或常量的值按照特定的格式插入到字符串中,形成新的字符串。字符串格式化涉及到兩個概念:格式和格式化。
- 格式化:把變量(常量)的值按照某種模式進行表征并嵌入到一個字符串中,形成新的字符串。
- 格式:指的是所采用的這種模式,在格式化字符串時會使用特定的格式規則來決定如何將變量或常量的值嵌入到目標字符串中。
- 字符串格式化輸出可以使用不同的格式規則,如占位符、格式化指令、模板字符串等方式來指定變量或常量嵌入到目標字符串中的方式。
- 3 種模式
- (1)%
- (2)format()
- (3)f-string
3.1 %符號格式化字符串
??%符號格式化字符串是一種傳統的格式化方法,通過在字符串中使用占位符 %
和格式化字符串中的參數來實現格式化輸出。
1. 一般形式
??字符串格式化的一般形式為:”wwww %rrrrr www”%x,其中:
2. 常用格式字符
??常用的格式字符及其含義如下:
格式字符 | 說明 |
---|---|
%c | 格式化字符或編碼 |
%s | 格式化字符串 |
%d , %i | 格式化整數 |
%u | 格式化無符號整數 |
%% | 輸出字符 % |
%o | 格式化八進制數 |
%x | 格式化十六進制數 |
%f , %F | 格式化浮點數,可指定小數位數 |
%e , %E | 用科學計數法格式化浮點數 |
%g , %G | 根據值的大小采用科學計數法或者浮點數形式格式化浮點數 |
3. 最小寬度和精度
- 最小寬度是轉換后的值所保留的最小字符個數。
- 精度(對于數字來說)則是結果中應該包含的小數位數。
'%f' % 3.1416
- 輸出 ‘3.141600’,單獨的%f默認保留6位小數
'%.2f' % 3.1416
- 輸出 ‘3.14’,指定保留2位小數
'%6.2f' % 3.1416
- 輸出 ’ 3.14’,保留2位小數,寬度為6,空位填空格
'%07.2f' % 3.1416
- 輸出 ‘0003.14’,保留2位小數,寬度為7,空位填0
'%+07.2f' % 3.1416
- 輸出 ‘+003.14’,保留2位小數,寬度為7,正數加正號,空位填0
'%-7.2f' % -3.1416
- 輸出 '-3.14 ',保留2位小數,寬度為7,空位填空格,左對齊輸出
4. 進位制和科學計數法
??可以將一個數轉換成不同的進位制,也可按科學計數法進行轉換。
a = 123456
'%o' % a # 輸出 '361100',轉換為八進制串
'%x' % a # 輸出 '1e240',轉換為十六進制串
'%e' % 12345.678 # 輸出 '1.234568e+04',轉換為科學計數法串
5. 多個對象的格式化輸出
??可以一次轉換多個對象,這些對象表示成一個元組形式,位置與格式化字符一一對應。
'%s, %4d, %s' % (3.456727, 89, 'Lily')
- 輸出 ‘3.46, 89, Lily’
6. 典例
x = 10
name = 'Lily'
age = 18
pi = 3.1415926# 常規示例
print("Value of x is %d" % x) # 輸出 'Value of x is 10'
print("My name is %s, I am %d years old" % (name, age)) # 輸出 'My name is Lily, I am 18 years old'# 格式化整數示例
print("Decimal: %d, Octal: %o, Hexadecimal: %x" % (x, x, x)) # 輸出 'Decimal: 10, Octal: 12, Hexadecimal: a'# 格式化浮點數示例
print("Pi value with default precision: %f" % pi) # 輸出 'Pi value with default precision: 3.141593'
print("Pi value with 2 decimal places: %.2f" % pi) # 輸出 'Pi value with 2 decimal places: 3.14'# 格式化科學計數法示例
print("Pi value in scientific notation: %e" % pi) # 輸出 'Pi value in scientific notation: 3.141593e+00'# 最小寬度和精度示例
print("Width 8: %8d" % x) # 輸出 'Width 8: 10'
print("Width 8 with leading zeros: %08d" % x) # 輸出 'Width 8 with leading zeros: 00000010'
print("Pi with width 10 and precision 3: %10.3f" % pi) # 輸出 'Pi with width 10 and precision 3: 3.142'# 對正數加正號示例
print("Positive number with sign: %+d" % x) # 輸出 'Positive number with sign: +10'# 左對齊輸出示例
print("Left-aligned string: %-10s" % name) # 輸出 'Left-aligned string: Lily '# 其他進制示例
print("Binary: %b" % x) # 輸出 'Binary: 1010'
print("Octal: %#o" % x) # 輸出 'Octal: 0o12'
print("Hexadecimal: %#x" % x) # 輸出 'Hexadecimal: 0xa'# 字符串格式化拓展示例
print("Value of x is {}, My name is {}, I am {} years old".format(x, name, age)) # 使用format()方法進行字符串格式化
print(f"Value of x is {x}, My name is {name}, I am {age} years old") # 使用f-string進行字符串格式化
??%符號格式化字符串方法在早期版本的Python中廣泛使用,但在Python 3中,推薦使用format()
方法或f-string進行字符串的格式化輸出。
3.2 format()方法格式化字符串
??format()
方法是一種更加靈活和易讀的字符串格式化方法,它使用 {}
占位符和format()
方法中的參數來進行格式化。
1. 一般形式
'www{<參數序號>: <格式控制標記>}www'.format(x)
其中,{}
用來標記格式化的位置,<參數序號>
指定傳遞的參數序號,<格式控制標記>
用于控制格式化的方式。
name = 'Bob'
age = 25
formatted_string = "Name: {}, Age: {}".format(name, age)
print(formatted_string) # 輸出: Name: Bob, Age: 25
??在format()
方法中,使用 {}
占位符指定插入變量的位置,可以在占位符中指定參數的順序,也可以使用索引指定參數的順序。
formatted_string = "Name: {1}, Age: {0}".format(age, name)
print(formatted_string) # 輸出: Name: Bob, Age: 25
2. 參數傳遞
??下述代碼均輸出:‘我叫張清,今年18歲’
- 可以根據位置來傳遞參數;
'我叫{},今年{}歲'.format('張清',18)
- 也可以通過索引值來引用位置參數,參數索引從0開始
'我叫{0},今年{1}歲'.format('張清',18)
'我叫{1},今年{0}歲'.format(18, '張清')
- 還可以使用序列,通過序列參數的位置索引和序列中元素索引來引用相應值
my = ['張清', 18]
'我叫{0[0]},今年{0[1]}歲'.format(my)
- 同時也可以直接將序列解包,通過位置依次將序列中的元素傳遞到目標字符串中
'我叫{},今年{}歲'.format(*my)
- 另外還支持使用關鍵參數的形式,可以通過關鍵字來指定參數的值。例如:
'我叫{name},今年{age}歲'.format(name='張清', age=18)
- 也可用
**字典名
的形式將字典中的元素作為參數
my = {'name': '張清', 'age': 18}
'我叫{name},今年{age}歲'.format(**my)
3. 格式控制標記
??format()
方法還支持一些格式控制標記,比如進位制、千分位格式化、對齊方式等。
'{0:.2f}'.format(2/3) # 保留兩位小數
- 輸出:‘0.67’
'{0:b}'.format(8) # 二進制
- 輸出:‘1000’
'{0:o}'.format(8) # 八進制
- 輸出:‘10’
'{0:x}'.format(18) # 十六進制
- 輸出:‘12’
'{:,}'.format(1234567890) # 千分位格式化
- 輸出:‘1,234,567,890’
4. 對齊方式
'{0:*>10}'.format(18) # 右對齊
- 輸出:‘********18’
'{0:*<10}'.format(18) # 左對齊
- 輸出:‘18********’
'{0:*^10}'.format(18) # 居中對齊
- 輸出:‘18’
'{0:*=10}'.format(-18) # *放在-和18中間
- 輸出:‘-*******18’
'{0:_},{0:#x}'.format(9999) # _作為分隔符
- 輸出:‘9_999,0x270f’
3.3 f-string 格式化字符串
??Python 3.6及以上版本引入了 f-string,它是一種在字符串前加上 f
或 F
,在字符串中直接使用變量名或表達式進行格式化的方法。
name = 'Charlie'
age = 20
formatted_string = f"Name: {name}, Age: {age}"
print(formatted_string)
- 輸出: Name: Charlie, Age: 20
??字符串格式化輸出在實際編程中非常常用,能夠使代碼更加清晰、易讀,并且可以靈活地處理不同類型的數據。