<noframes id="7xbfr"><pre id="7xbfr"><output id="7xbfr"></output></pre>

      <big id="7xbfr"><font id="7xbfr"><listing id="7xbfr"></listing></font></big>
        <p id="7xbfr"></p>
        <menuitem id="7xbfr"></menuitem>

          <video id="7xbfr"><mark id="7xbfr"><listing id="7xbfr"></listing></mark></video>
            <form id="7xbfr"></form>

          <delect id="7xbfr"><var id="7xbfr"></var></delect>

          Python格式化字符串的4種方式

          時間:2022-03-24 20:45:25 類型:python
          字號:    

          目錄:

          Python格式化字符串的4種方式

          一:%號

          %號格式化字符串的方式從Python誕生之初就已經存在,時至今日,python官方也并未棄用%號,但也并不推薦這種格式化方式。

          # 1、格式的字符串(即%s)與被格式化的字符串(即傳入的值)必須按照位置一一對應
          # ps:當需格式化的字符串過多時,位置極容易搞混
          print('%s asked %s to do something' % ('egon', 'lili'))  # egon asked lili to do something
          print('%s asked %s to do something' % ('lili', 'egon'))  # lili asked egon to do something
          
          # 2、可以通過字典方式格式化,打破了位置帶來的限制與困擾
          print('我的名字是 %(name)s, 我的年齡是 %(age)s.' % {'name': 'egon', 'age': 18})
          
          kwargs={'name': 'egon', 'age': 18}
          print('我的名字是 %(name)s, 我的年齡是 %(age)s.' % kwargs)

          二:str.format

          format方法是在Python 2.6中引入的,是字符串類型的內置方法。因為str.format的方式在性能和使用的靈活性上都比%號更勝一籌,所以推薦使用

          2.1 使用位置參數

          # 按照位置一一對應
          print('{} asked {} to do something'.format('egon', 'lili'))  # egon asked lili to do something
          print('{} asked {} to do something'.format('lili', 'egon'))  # lili asked egon to do something

          2.2 使用索引

          # 使用索引取對應位置的值print('{0}{0}{1}{0}'.format('x','y')) # xxyx

          2.3 使用關鍵字參數or字典

          # 可以通過關鍵字or字典方式的方式格式化,打破了位置帶來的限制與困擾
          print('我的名字是 {name}, 我的年齡是 {age}.'.format(age=18, name='egon'))
          
          kwargs = {'name': 'egon', 'age': 18}
          print('我的名字是 {name}, 我的年齡是 {age}.'.format(**kwargs)) # 使用**進行解包操作

          三:f-Strings

          str.format() 比 %格式化高級了一些,但是它還是有自己的缺陷。當需要傳入的字符串過多時,仍然會顯得非常冗長。與在Python 3.6中引入 了f-strings,不僅比str.format更簡潔,性能上也更勝一籌

          f-string是以f或F開頭的字符串, 核心在于字符串中符號{}的使用

          3.1 {}中可以是變量名

          name = 'egon'
          age = 18
          print(f'{name} {age}')  # egon 18
          print(F'{age} {name}')  # 18 egon

          3.2 {}中可以是表達式

          # 可以在{}中放置任意合法的Python表達式,會在運行時計算
          # 比如:數學表達式
          print(f'{3*3/2}') # 4.5
          
          # 比如:函數的調用
          def foo(n):
              print('foo say hello')
              return n
          
          print(f'{foo(10)}') # 會調用foo(10),然后打印其返回值
          
          # 比如:調用對象的方法
          name='EGON'
          print(f'{name.lower()}') # egon

          四:標準庫模板

          from string import Template
          
          name='EGON'
          t = Template('Hello $name!')
          res=t.substitute(name=name)
          
          print(res)  # Hello EGON!

          五:總結四種方式的應用場景

          1、如果格式化的字符串是由用戶輸入的,那么基于安全性考慮,推薦使用Template

          2、如果使用的python3.6+版本的解釋器,推薦使用f-Stings

          3、如果要兼容python2.x版本的python解釋器,推薦使用str.format

          4、如果不是測試的代碼,不推薦使用%


          黄网站免费 <