IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [terry笔记]Python字符串

    summer发表于 2016-10-28 08:32:51
    love 0

    如下学习python的字符串用法。

    print(dir(str))

    ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

    如上是字符串的所有方法,一个一个看,共44个

     

    1.返回第一个字母大写

       capitalize(...)

          capitalize() -> string

    1
    2
    3
    4
    >>>a = 'hello world'
    >>> b = a.capitalize()
    >>> print (b)
    Hello world

    2.按指定长度填充特定字符

        center(...)

          S.center(width[, fillchar]) -> string

    1
    2
    3
    4
    5
    6
    7
    >>> a = 'linux'
    >>> print a.center(7,'h')
    hlinuxh
    >>> print a.center(8,'h')
    hlinuxhh
    >>> print a.center(9,'h')
    hhlinuxhh

    3.查找某字符串出现的次数

        count(...)

          S.count(sub[, start[, end]]) -> int

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a = "this is my dog, i love this dog and it's a good dog!"
    >>> print a.count('dog')
    3
    >>> print a.count('dog',15)
    2
    >>> print a.count('dog',15,30)
    0
    >>> print a.count('dog',15,32)
    1

    4.以指定的编码格式解码字符串。默认编码为字符串编码(适合python2中处理中文)

        decode(...)

          S.decode([encoding[,errors]]) ->object

    1
    2
    3
    b = 'strid'
    >>> b.decode('utf-8')
    u'strid'

    5.用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置

        endswith(...)

        S.endswith(suffix[,start[, end]]) ->bool

    1
    2
    3
    4
    5
    6
    7
    >>> shaw = 'I am shaw,what\'s your name ?'
    >>> shaw.endswith('?')
    True
    >>> shaw.endswith('w',7,9)
    True
    >>> shaw.endswith('w',7,8)
    False

    6.把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是8,tabsize -- 指定转换字符串中的 tab 符号('\t')转为空格的字符数。

        expandtabs(...)

        S.expandtabs([tabsize])-> string

    1
    2
    3
    4
    5
    6
    7
    >>> info = 'today is a good d\tay'
    >>> print info.expandtabs()
    today is a good d       ay
    >>> print info.expandtabs(4)   # 把tab装换成4个空格
    today is a good d   ay        
    >>> printinfo.expandtabs(1)
    today is a good d ay          # 把tab装换成1个空格

    7.检测字符串中是否包含子字符串 str ,如果指定 beg(开始)和 end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串,则返回开始的索引值,否则返回-1。

        find(...)

        S.find(sub [,start [,end]])-> int

    1
    2
    3
    4
    5
    6
    7
    >>> a = 'stivenwang'
    >>> a.find('w')
    6
    >>> a.find('w',9)
    -1
    >>> a.find('w',9,11)
    -1

    8.格式换字符串输出(方法与%相似,但可以指定顺序)

        format(...)

        S.format(*args, **kwargs)-> string

    1
    2
    3
    4
    5
    6
    7
    8
    >>> name = 'StivenWang'
    >>> fruit = 'apple'
    >>> print 'my name is {},I like {}'.format(name,fruit)
    my name is StivenWang,I like apple
    >>> print 'my name is {1},I like {0}'.format(fruit,name)
    my name is StivenWang,I like apple
    >>> print 'my name is {mingzi},I like{shuiguo}'.format(shuiguo=fruit,mingzi=name)
    my name is StivenWang,I like apple

    9.检测字符串string中是否包含子字符串 str ,如果存在,则返回str在string中的索引值,如果指定beg(开始)和 end(结束)范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常(ValueError: substring not found)。

       index(...)

        S.index(sub [,start [,end]])-> int

    1
    2
    3
    4
    5
    6
    7
    8
    >>> str1 = "this is string example....wow!!!"
    >>> str2 = "exam"
    >>> print str1.index(str2)
    15
    >>> print str1.index(str2,20)
    Traceback (most recent call last):
      File "<input>",line 1, in <module>
    ValueError: substringnot found报错

    10.检测字符串是否由字母或数字组成。

        isalnum(...)

        S.isalnum() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> a = '123'
    >>> a.isalnum()
    True
    >>> b = 'shaw'
    >>> b.isalnum()
    True
    >>> c = 'shaw123'
    >>> c.isalnum()
    True
    >>> d = 'th 123'
    >>> d.isalnum()
    False

    11.检测字符串是否只由字母组成

        isalpha(...)

        S.isalpha() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >> a = '123'
    >>> a.isalpha()
    False
    >>> b = '123shaw'
    >>> b.isalpha()
    False
    >>> c = 'shaw'
    >>> c.isalpha()
    True
    >>> d = 'sha w'
    >>> d.isalpha()
    False

    12.检测字符串是否只由数字组成。

        isdigit(...)

        S.isdigit() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a = '123'
    >>> a.isdigit()
    True
    >>> b = 'shaw'
    >>> b.isdigit()
    False
    >>> c = '123shaw'
    >>> c.isdigit()
    False

    13.检测字符串是否由小写字母组成。

        islower(...)

        S.islower() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    >>> a = 'shaw'
    >>> a.islower()
    True
    >>> b = '123'
    >>> a.islower()
    True
    >>> c = '123shaw'
    >>> c.islower()
    True
    >>> d = 'SHAW'
    >>> d.islower()
    False
    >>> e = '123SHAW'
    >>> e.islower()
    False

    14.检测字符串是否只由空格组成。

        isspace(...)

        S.isspace() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a = ' '
    >>> a.isspace()
    True
    >>> a = '123'
    >>> a.isspace()
    False
    >>> a = 'shaw'
    >>> a.isspace()
    False

    15.检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。

        istitle(...) 

        S.istitle() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> a = 'Shaw'
    >>> a.istitle()
    True
    >>> a = 'Shaw123'
    >>> a.istitle()
    True
    >>> a = '123'
    >>> a.istitle()
    False

    16.检测字符串中所有的字母是否都为大写

        isupper(...)

          S.isupper() -> bool

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> a = '123'
    >>> a.isupper()
    False
    >>> a = 'Shaw'
    >>> a.isupper()
    False
    >>> a = 'Shaw123'
    >>> a.isupper()
    False
    >>> a = 'SHAW123'
    >>> a.isupper()
    True

    17.用于将序列中的元素以指定的字符连接生成一个新的字符串。

    join(...)

        S.join(iterable) ->string

    1
    2
    3
    4
    >>> a = '-'
    >>> b = 'shaw'
    >>> print a.join(b)
    s-h-a-w

    18.返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

        ljust(...)

        S.ljust(width[, fillchar])-> string

        width -- 指定字符串长度

        fillchar -- 填充字符,默认为空格

    1
    2
    3
    4
    5
    >>> s = 'shaw'
    >>> s.ljust(10)
    'shaw      '
    >>> s.ljust(10,'8')
    'shaw888888'

    19.转换字符串中所有大写字符为小写。

        Lower(...)

        S.lower() -> string

    1
    2
    3
    4
    5
    6
    >>> s = 'PYTHON'
    >>> s.lower()
    'python'
    >>> s = 'PYTHON123'
    >>> s.lower()
    'python123'

    20.用于截掉字符串左边的空格或指定字符。

        lstrip(...)

        S.lstrip([chars]) ->string or unicode

    1
    2
    3
    4
    5
    6
    >>> s = '%%%shaw'
    >>> s.lstrip('%')
    'shaw'
    >>> s = '   shaw'
    >>> s.lstrip()
    'shaw'

    21.根据指定的分隔符将字符串进行分割(返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串)

        partition(...)

        S.partition(sep) ->(head, sep, tail)

    1
    2
    3
    >>> S = 'are you know:lilin is lowser'
    >>> S.partition('lilin')
    ('are you know:', 'lilin', ' is lowser')

    22.把字符串中的 old(旧字符串)替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

        replace(...)

        S.replace(old, new[,count]) -> string

    1
    2
    3
    >>> S = 'shaw'
    >>> S.replace('sh','LI')
    'LIaw'

    23.返回字符串最后一次出现的位置,如果没有匹配项则返回-1。

        rfind(...)

        S.rfind(sub [,start[,end]]) -> int

        str -- 查找的字符串

        beg -- 开始查找的位置,默认为0

        end -- 结束查找位置,默认为字符串的长度。

    1
    2
    3
    4
    5
    >>> s = 'lilin is good li lao ban'
    >>> s.rfind('li')
    14
    >>> s.rfind('li',0,8)
    2

    24.返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。

        rindex(...)

        S.rindex(sub [,start[,end]]) -> int

        语法:

          str.rindex(str,beg=0 end=len(string))

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> s = 'my name is shaw'
    >>> s.rindex('s')
    11
    >>> s.rindex('s',5,10)
    9
    >>> s.rindex('s',2,8)
    Traceback (most recent call last):
      File "<input>",line 1, in <module>
    ValueError: substring not found

    25.返回的原/新字符串右对齐,且默认使用空格填充至指定长度(width)的新字符串。如果指定的长度(width)小于原字符串的长度则返回原字符串

        rjust(...)

        S.rjust(width[, fillchar])-> string

        语法:

          str.rjust(width[,fillchar])

           width -- 指定填充指定字符后新字符串的总长度.

           fillchar– 要填充的字符,默认为空格。

    1
    2
    3
    4
    5
    6
    7
    >>> s = 'sch'
    >>> s.rjust(20)
    '                 sch'
    >>> s.rjust(20,'0')
    '00000000000000000sch'
    >>> s.rjust(20,'H')
    'HHHHHHHHHHHHHHHHHsch'

    26.删除 string 字符串末尾的指定字符(默认为空格).

        rstrip(...)

        S.rstrip([chars]) ->string or unicode

        语法:

          str.rstrip([chars])

    1
    2
    3
    >>> s = 'shaw\n'
    >>> s.rstrip('\n')
    'shaw'

    27.通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔 num 个子字符串

        split(...)

        S.split([sep [,maxsplit]])-> list ofstrings

        语法:

       str.split(str="",num=string.count(str)).

    1
    2
    3
    4
    5
    >>> s = 'shaw\nlinux\nmac'
    >>> s.split('\n')
    ['shaw', 'linux', 'mac']
    >>> s.split('\n',1)
    ['shaw', 'linux\nmac']

    28.按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行.

        splitlines(...)

        S.splitlines(keepends=False)-> list ofstrings

        语法:

          str.splitlines( num=string.count('\n'))

           num -- 分割行的次数。

    1
    2
    3
    4
    5
    6
    >>> s = 'what\'s your name?\n my name is shaw\n how old areyou?'
    >>> s.splitlines()
    ["what's your name?", ' my name is shaw', ' how old areyou?']
    >>> s.splitlines(1)
    ["what's your name?\n", ' my name is shaw\n', ' how old areyou?']
    >>> s.splitlines(3)

    29.用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end指定值,则在指定范围内检查。

        startswith(...)

        S.startswith(prefix[,start[, end]]) ->bool

        语法:

        str.startswith(str,beg=0,end=len(string))

        str -- 检测的字符串。

        strbeg -- 可选参数用于设置字符串检测的起始位置。

        strend -- 可选参数用于设置字符串检测的结束位置。

    1
    2
    3
    4
    5
    >>> s = 'my name is shaw'
    >>> s.startswith('my')
    True
    >>> s.startswith('my',10,15)
    False

    30.用于移除字符串头尾指定的字符(默认为空格)。

        strip(...)

        S.strip([chars]) ->string or unicode

    1
    2
    3
    >>> s = 'my name is sam'
    >>> s.strip('m')
    'y name is sa'

    31.用于对字符串的大小写字母进行转换(小写转大写,大写转小写)

        swapcase(...)

        S.swapcase() -> string

    1
    2
    3
    4
    5
    6
    >>> s = 'stiven'
    >>> s.swapcase()
    'STIVEN'
    >>> s = 'SHAW'
    >>> s.swapcase()
    'shaw'

    32.返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。

        title(...)

        S.title() -> string

    1
    2
    3
    >>> s = 'my name is shaw'
    >>> s.title()
    'My Name Is Shaw'

    33.根据参数table给出的表(包含 256 个字符)转换字符串的字符, 并返回翻译后的字符串。要过滤掉的字符放到del 参数中

        translate(...)

        S.translate(table [,deletechars])->string

        语法:

          str.translate(table[, deletechars])

           table -- 翻译表,翻译表是通过maketrans方法转换而来。

          deletechars -- 字符串中要过滤的字符列表。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> from string import maketrans
    suchas = maketrans('sm','@')
    >>> s = 'this is sam\'s dog'
    >>> s
    "this is sam's dog"
    >>> s.translate(suchas)
    "thi@ i@ @a'@ dog"
    >>> s.translate(suchas,'dog') 去除d,o,g字符
    "thi@ i@ @a'@ "

    34.将字符串中的小写字母转为大写字母

        upper(...)

        S.upper() -> string

    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> s = 'sam'
    >>> s.upper()
    'SAM'
    >>> s = '23sam'
    >>> s.upper()
    '23SAM'
    >>> s = '23s am'
    >>> s.upper()
    '23S AM'


沪ICP备19023445号-2号
友情链接