歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋(píng)果6袋
6
麥子學(xué)院

python之Character string

發(fā)布時(shí)間:2017-09-26 15:24  回復(fù):0  查看:2842   最后回復(fù):2017-09-26 15:24  
本文和大家分享的主要是python Character string相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家 學(xué)習(xí)python 有所幫助。
  1 、 python 字符串
  字符串是 Python  中最常用的數(shù)據(jù)類型。我們可以使用引號(hào) (' ") 來(lái)創(chuàng)建字符串, l
Python 不支持單字符類型,單字符也在 Python 也是作為一個(gè)字符串使用。
  >>> var1 = 'hello python'    # 定義字符串
  >>> print(var1[0])     # 切片截取,從 0 開(kāi)始,不包括截取尾數(shù)
  h
  >>> print(var1[0:5])
  hello
  >>> print(var1[-6:])
  python
  >>> var2 = var1[0:6]+'world'   # 截取字符并拼接賦值給新變量
  >>> print(var2)
  hello world
  2 、 python 轉(zhuǎn)義字符
  \ : 在行尾時(shí),為續(xù)行符
  \\ : 反斜杠轉(zhuǎn)義,輸出 '\'
  \' : 單引號(hào)轉(zhuǎn)義
  \" : 雙引號(hào)轉(zhuǎn)義
  \b : 退格( backspace
  \n : 換行
  \v : 縱向制表符
  \t : 橫向制表符
  \r : 回車(chē)
  \f : 換頁(yè)
  3 、 python 字符串運(yùn)算符
(+) 拼接, (*) 重復(fù), ([]) 索引, ([:]) 切片, (in) 成員判斷, (not in) 非成員判斷, (r/R) 元素輸出字符串
  >>> var1 = 'hello'
  >>> var2 = 'python'
  >>> print(var1+var2)   # 拼接字符串
  hellopython
  >>> print(var1*3)   # 重復(fù)輸出字符串
  hellohellohello
  >>> print(var1[0])  # 索引字符串
  h
  >>> print(var1[3:])  # 索引切片
  lo
  >>> 'e' in var1   # 判斷字符串是否在變量中
  True
  >>> 'p' not in var1  # 判斷字符串是否不在變量中
  True
  >>> print("he\tllo \n")
  he    llo
  >>> print(r"he\tllo \n") # 原始輸出字符串,也就是原始輸出轉(zhuǎn)義字符
  he\tllo \n
  4 、格式化字符串
  Python  支持格式化字符串的輸出 。盡管這樣可能會(huì)用到非常復(fù)雜的表達(dá)式,但最基本的用法是將一個(gè)值插入到一個(gè)有字符串格式符 %s  的字符串中。
  在 Python  中,字符串格式化使用與  中  sprintf  函數(shù)一樣的語(yǔ)法。
  python 字符串格式化符號(hào):
  %c 格式化字符及其 ASCII
  %s 格式化字符串
  %d 格式化整數(shù)
  %u 格式化無(wú)符號(hào)整型
  %o 格式化無(wú)符號(hào)八進(jìn)制數(shù)
  %x 格式化無(wú)符號(hào)十六進(jìn)制數(shù)
  %X 格式化無(wú)符號(hào)十六進(jìn)制數(shù)(大寫(xiě))
  %f 格式化浮點(diǎn)數(shù)字,可指定小數(shù)點(diǎn)后的精度
  %e 用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
  %E 作用同 %e ,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
  %g%f %e 的簡(jiǎn)寫(xiě)
  %G%f  和  %E  的簡(jiǎn)寫(xiě)
  %p 用十六進(jìn)制數(shù)格式化變量的地址
  格式化操作符輔助指令:
  * 定義寬度或者小數(shù)點(diǎn)精度
  - 用做左對(duì)齊
  + 在正數(shù)前面顯示加號(hào) ( + )
  在正數(shù)前面顯示空格
  # 在八進(jìn)制數(shù)前面顯示零 ('0') ,在十六進(jìn)制前面顯示 '0x' 或者 '0X'( 取決于用的是 'x' 還是 'X')
  0 顯示的數(shù)字前面填充 '0' 而不是默認(rèn)的空格
  %'%%' 輸出一個(gè)單一的 '%'
  (var) 映射變量 ( 字典參數(shù) )
m.n.m  是顯示的最小總寬度 ,n  是小數(shù)點(diǎn)后的位數(shù) ( 如果可用的話 )
  >>> print("ascii:%c"%'s')  # 格式化輸出字符
  ascii:s
  >>> print("ascii:%c"%'1')  # 格式化輸出數(shù)字
  ascii:1
  >>> print("str:%s"%'character string')  # 格式化字符串
  str:character string
  >>> print("str:%d"%888)   # 格式化整數(shù)
  str:888
  >>> print("str:%f"%888)   # 格式浮點(diǎn)數(shù)
  str:888.000000
  >>> print("str:%e"%888)  # 格式化科學(xué)計(jì)數(shù)浮點(diǎn)數(shù)
  str:8.880000e+02
  >>> print("str:%E"%888)  # 同上
  str:8.880000E+02
  >>> print("str:%G"%888)  #%f %E 的簡(jiǎn)寫(xiě)
  str:888
  >>> print("str:%20f"%888.089)   # 定義 20 寬度輸出
  str:          888.089000
  >>> print("str:%-20f"%888.089)  # 用左對(duì)齊
  str:888.089000
  >>> print("str:%+20f"%888.089)  # 在正數(shù)前顯示加號(hào)
  str:         +888.089000
  >>> print("str:%+-20f"%888.089)   # 左對(duì)齊顯示加號(hào)
  str:+888.089000
  >>> print("str:%020f"%888.089)   # 0 填充默認(rèn)的空格
  str:0000000000888.089000
  >>> print("str:%%%20f"%888.089)  # 在數(shù)字前輸入 % 號(hào)
  str:%          888.089000
  >>> print("str:%%%-20f"%888.089)  # 左對(duì)齊輸出 % 號(hào)
  str:%888.089000
  >>> print("str:%20.3f"%888.089)   # 顯示最小總寬度 20 ,小數(shù)點(diǎn)后位數(shù)為 3
  str:             888.089
python2.6 開(kāi)始,增加格式化字符串函數(shù) str.format():
  用法:它通過(guò){} : 來(lái)代替 %
  位置參數(shù)不受順序約束,且可以為{} , 只要 format 里有相對(duì)應(yīng)的參數(shù)值即可 , 如參數(shù)值不夠就會(huì)報(bào)錯(cuò),參數(shù)索引從 0 開(kāi),傳入位置參數(shù)列表可用 * 列表
  In [27]: '{}+{}={}'.format(1,2,3)   # 格式化按順序應(yīng)用參數(shù)值
  Out[27]: '1+2=3'
  In [28]: '{2}-{1}={0}'.format(1,2,3)  # 指定順序應(yīng)用參數(shù)值
  Out[28]: '3-2=1'
  In [29]: '{0}+{0}={1}'.format(2,3)  # 指定參數(shù)可以重復(fù)使用
  Out[29]: '2+2=3'
  In [30]: '{}+{}={}'.format(2,3)   # 如不指定順序, format 參數(shù)不夠就會(huì)報(bào)錯(cuò)
  ---------------------------------------------------------------------------
  IndexError                                Traceback (most recent call last)
   in < module>()
  ----> 1 '{}+{}={}'.format(2,3)IndexError: tuple index out of range
  In [31]: l1 = [2,4,8]
  In [32]: '{}*{}={}'.format(*l1)   # 使用列表引用參數(shù)值
  Out[32]: '2*4=8'
  In [33]: dct = {'name':'python','age':20}   # 定義字典
  In [35]: 'welcom to {name},age is {age}'.format(name='qi',age=28) # 變量引用
  Out[35]: 'welcom to qi,age is 28'
  In [36]: 'welcom to {name},age is {age}'.format(**dct) # 使用 ** 引用字典參數(shù)必須填寫(xiě) key
  Out[36]: 'welcom to python,age is 20'
  填充與格式化:
  In [53]: "{0: >20}".format("string")   # 0 位開(kāi)始已空格填充 20 寬度左對(duì)齊
  Out[53]: '              string'
  In [54]: "{0:&>20}".format("string")
  Out[54]: '&&&&&&&&&&&&&&string'
  In [55]: "{0:#>20}".format("string") # 使用 # 號(hào)會(huì)有個(gè)小 bug
  ....:
  Out[55]: '##############string'
  In [60]: '{0:+<20}'.format("string")  # 向右對(duì)齊填充 +
  Out[60]: 'string++++++++++++++'
  In [61]: '{0:+^20}'.format("string")  # 劇中對(duì)齊填充 +
  Out[61]: '+++++++string+++++++'
  精度與進(jìn)制:
  >>> '{0:.3f}'.format(10/3)    # 小數(shù)位進(jìn)度格式化
  '3.333'
  >>> '{0:b}'.format(8)    # 格式化二進(jìn)制
  '1000'
  >>> '{0 python之Character&nbsp;string}'.format(9)  # 格式化八進(jìn)制
  '11'
  >>> '{0:x}'.format(26) # 格式化十六進(jìn)制
  '1a'
  >>> '{0:,}'.format(123456789)  # 千分位格式化
  '123,456,789'
  使用索引:
  >>> l2 = ['AA',{'bb':'cc'},('d','e')]   # 列表索引引用
  >>> 'outing:{0[0]}'.format(l2)
  'outing:AA'
  >>> 'outing:{0[0]},{0[1]}'.format(l2)  # 將列表當(dāng)成一個(gè)元素,在其中索引值
  "outing:AA,{'bb': 'cc'}"
  5 、 python 的字符串方法
  1 >>> s = 'i mi to'     # 將字符串的第一個(gè)字符改為大寫(xiě)
  2 >>> s.capitalize()
  3 'I mi to'
  4
  5 >>> s = 'I MI TO'  # 將字符串所有字符改為小寫(xiě)
  6 >>> s.casefold()
  7 'i mi to'
  8
  9 >>> s.center(15)  # 將字符串劇中,并用空格將字符串填充長(zhǎng)度,如指定長(zhǎng)度小于實(shí)際長(zhǎng)度則沒(méi)有效果
  10 '    I MI TO    '
  11
  12 >>> s = 'abcabcabcabc' # 返回 sub 在字符串里出現(xiàn)的次數(shù), start , end 為可選參數(shù),決定范圍
  13 >>> s.count('a',0,12)
  14 4
  15 >>> s.encode(encoding='utf-8',errors='strict') # encoding 指定的編碼格式對(duì)字符串進(jìn)行編碼
  16 b'abcabcabcabc'
  17 >>> s.endswith('abc',1,12)  # 檢查字符串是否以 sub 結(jié)尾,是返回 True, 否返回 False start , end 為可選參數(shù),決定范圍
  18 True
  19
  20 >>> s = 'a\tb\tc'
  21 >>> s.expandtabs(4)   # 把字符串的 tab 字符( \t )轉(zhuǎn)化為空格,如不指定 tabsize, 默認(rèn)為 8 個(gè)空格
  22 'a   b   c'
  23
  24 >>> s.find('b')  # 檢測(cè)字符串是否在字符串中,如在則返回索引,否則返回 -1 ,可指定起始值。
  25 2
  26
  27 >>> s='hello python'
  28 >>> s.index('hello')   #  類似 find() ,不同在于如果 sub 不在字符串中,返回異常
  29 0
  30
  31 >>> s.isalnum()    # 有空格返回 false
  32 False
  33 >>> s='hellopython'
  34 >>> s.isalnum()   # 如果字符串至少有一個(gè)字符,并且所有字符都是字母或數(shù)字則返回 True, 否則 False
  35 True
  36 >>> s.isalpha()  # 如果字符串至少有一個(gè)字符,并且所有字符都是字母則返回 True, 否則 False
  37 True
  38
  39 >>> s = '123'
  40 >>> s.isdigit()  # 如果字符串只包含數(shù)字則返回 True, 否則返回 False
  41 True
  42
  43 >>> s = '123'
  44 >>> s.isdecimal()  # 如果字符串只包含十進(jìn)制數(shù)字則返回 True ,否則返回 False
  45 True
  46 >>> s= 'ox123'
  47 >>> s.isdecimal()
  48 False
  49 >>> s = '0.33'
  50 >>> s.isdecimal()
  51 False
  52
  53 >>> s = 'abc'
  54 >>> s.islower()  # 如果字符中至少包含一個(gè)能區(qū)分大小寫(xiě)的字符,并且這些字符都是小寫(xiě)則返回 True, 否則返回 Flase
  55 True
  56 >>> s = 'Abc'
  57 >>> s.islower()
  58 False
  59
  60 >>> s = 'ABC'
  61 >>> s.isupper()  # 果字符中至少包含一個(gè)能區(qū)分大小寫(xiě)的字符,并且這些字符都是大寫(xiě)則返回 True, 否則返回 Flase
  62 True
  63 >>> s = 'ABc'
  64 >>> s.isupper()
  65 False
  66 >>>
  67
  68 >>> s = '123'
  69 >>> s.isnumeric()  # 如果字符串只包含數(shù)字字符,則返回 True, 否則返回 False
  70 True
  71 >>> s = '123a'
  72 >>> s.isnumeric()
  73 False
  74
  75 >>> 'def'.isidentifier()  # 判斷字符串是否包含該語(yǔ)言的保留字
  76 True
  77
  78 >>> 'aaa'.isprintable() # 判斷是否可以打印
  79 True
  80
  81 >>> ''.isspace()
  82 False
  83 >>> ' '.isspace()  # 判斷字符串中至少有一個(gè)字符且所有都是空格,否則返回 false
  84 True
  85 >>> ' a'.isspace()
  86 False
  87
  88 >>> 'Abc'.istitle()  # 判斷是否是標(biāo)題 格式,可以理解為首字母大寫(xiě)。
  89 True
  90 >>> 'aBC'.istitle()
  91 False
  92
  93 >>> s = '123'
  94 >>> '_'.join(s)  # 返回一個(gè)用指定字符串分隔的字,或者是將指定字符加入到另一個(gè)字符中。
  95 '1_2_3'
  96 >>> s.join('abc')
  97 'a123b123c'
  98
  99 >>> s = 'ABC'
  100 >>> s.lower()  # 返回的是指定字符串的拷貝,并轉(zhuǎn)化成小寫(xiě)
  101 'abc'
  102
  103 >>> s.ljust(10,'+')  # 可以指定寬度,以及填充字符串,返回的是按寬度,填充字符串格式化后的左對(duì)齊的字符串。
  104 'ABC+++++++'
  105
  106 >>> 'aaabccc'.partition('b')  # 在字符串中查找指定的字符,如找到則返回字符前部分,字符本身和后部分,如沒(méi)找到則返回字符串和兩個(gè)空字符串。
  107 ('aaa', 'b', 'ccc')
  108 >>> 'aaabccc'.partition('e')
  109 ('aaabccc', '', '')
  110
  111 >>> 'aaabccc'.rpartition('b')  # partition 一樣,但是是從右邊開(kāi)始
  112 ('aaa', 'b', 'ccc')
  113 >>> 'aaabccc'.rpartition('c')
  114 ('aaabcc', 'c', '')
  115
  116
  117 >>> 'aaaaabbcc'.replace('a','A')  # 用指定字符串替換指定字符串,如果不指定替換次數(shù),則替換所有
  118 'AAAAAbbcc'
  119 >>> 'aaaaabbcc'.replace('a','A',2)
  120 'AAaaabbcc'
  121
  122 >>> 'aabbcc'.rfind('a')  # 返回指定子串的最高索引,如果沒(méi)找到則返回 -1 ,可以指定要開(kāi)始替換的起始,結(jié)束位置。
  123 1
  124 >>> 'aabbcc'.rfind('e')
  125 -1
  126 >>> 'aabbcc'.rindex('a')  # 與上面的 rfind 一樣,只是如果沒(méi)找到不是返回 -1 ,而是觸發(fā)錯(cuò)誤
  127 1
  128 >>> 'aabbcc'.rindex('e')
  129 Traceback (most recent call last):
  130   File "", line 1, in
  131 ValueError: substring not found
  132
  133 >>> 'aa'.rjust(10,'+')  # ljust() 相對(duì)應(yīng),右對(duì)齊
  134 '++++++++aa'
  135 >>> 'aa'.ljust(10,'+')
  136 'aa++++++++'
  137
  138 >>> 'aabccbddbee'.split('b')  ## 按指定字符串對(duì)目標(biāo)字符串進(jìn)行切割,可以指定切割次數(shù)
  139 ['aa', 'cc', 'dd', 'ee']
  140 >>> 'aabccbddbee'.split('b',2)
  141 ['aa', 'cc', 'ddbee']
  142
  143 >>> 'aabccbddbee'.rsplit('b',2) # split 作用相同,但是從右側(cè)開(kāi)始
  144 ['aabcc', 'dd', 'ee']
  145
  146 >>> '  aabb  '.strip()  # 移除字符串兩側(cè)的指定字符串,默認(rèn)移除空格,需要注意的是可以指定多個(gè)字符
  147 'aabb'
  148 >>> '  aabb'.strip('b')
  149 '  aa'
  150 >>> '  aabb'.strip('ab')
  151 '  '
  152 >>> 'beaacebb'.rstrip('eb')  # strip 一樣,從右側(cè)刪除指定字符,可以為多個(gè)
  153 'beaac'
  154
  155 >>> 'aa\nbb\ncc\ndd'.splitlines()  # 按換行符切割顯示,如沒(méi)指定 keepends=True 則將換行符移除。
  156 ['aa', 'bb', 'cc', 'dd']
  157 >>> 'aa\nbb\ncc\ndd'.splitlines(keepends=True)
  158 ['aa\n', 'bb\n', 'cc\n', 'dd']
  159
  160 >>> 'aabbc'.startswith('a') # 判斷字符串是否以某個(gè)字符開(kāi)頭,可以是多字符
  161 True
  162 >>> 'aabbc'.startswith('b')
  163 False
  164 >>> 'aabbc'.startswith('aab')
  165 True
  166
  167 >>> 'aaBBcc'.swapcase()  # 轉(zhuǎn)換大小寫(xiě)
  168 'AAbbCC'
  169
  170 >>> 'wend is ok'.title()   # 標(biāo)題格式,首字母大寫(xiě),其它字符小寫(xiě)
  171 'Wend Is Ok'
  172
  173 >>> 'wend is ok'.upper()  # 將字符全部轉(zhuǎn)換成大寫(xiě)
  174 'WEND IS OK'
  175
  176 >>> 'wend is ok'.zfill(20)  # 這里的 z zero ,用 0 將字符填充到指定長(zhǎng)度
  177 '0000000000wend is ok'
來(lái)源:博客園
您還未登錄,請(qǐng)先登錄

熱門(mén)帖子

最新帖子

?