zoukankan      html  css  js  c++  java
  • 对字符串进行切分的技巧

    转载至:http://www.revotu.com/python-split-string-methods.html

     对字符串进行切分有两种方法:str.split() 和 re.split()

    Python中字符串分割的常用方法是直接调用字符串的str.split方法,但是其只能指定一种分隔符,如果想指定多个分隔符拆分字符串需要用到re.split方法(正则表达式的split方法)。

    str.split

    字符串的split方法函数原型如下,其中sep为指定的分隔符,maxsplit为最大分割次数:

    1
    str.split(sep=None, maxsplit=-1)

    默认情况下,不指定分隔符时则以空白字符(空格,回车,制表符等)作为分隔符拆分字符串:

    1
    2
    3
    4
    >>> s = 'A B C D'
    >>> s.split()
    ['A', 'B', 'C', 'D']
    >>>

    在结果列表中,不会包含空字符串:

    1
    2
    3
    4
    >>> s = ' A B C D '
    >>> s.split()
    ['A', 'B', 'C', 'D']
    >>>

    指定分隔符:

    1
    2
    3
    4
    5
    6
    7
    >>> s = 'www.google.com'
    >>> s.split('.')
    ['www', 'google', 'com']
    >>> s = 'AA||BB||CC||DD'
    >>> s.split('||')
    ['AA', 'BB', 'CC', 'DD']
    >>>

    指定最大分割次数:

    1
    2
    3
    4
    5
    6
    7
    >>> s = 'www.google.com'
    >>> s.split('.', 1)
    ['www', 'google.com']
    >>> s = 'AA||BB||CC||DD'
    >>> s.split('||', 2)
    ['AA', 'BB', 'CC||DD']
    >>>

    由此可见,当指定最大分割次数maxsplit时,结果列表长度为maxsplit+1
    但是,字符串的split方法只能指定一个分隔符,如下:

    1
    s = 'AAAA,BBBB:CCCC;DDDD'

    如果想指定逗号、冒号、分号都做为分隔符,字符串的split方法是做不到的,此时要用正则表达式中的split方法。

    re.split

    正则表达式的split方法原型如下,其中pattern为指定的分隔正则表达式,string为要分割的字符串,maxsplit为最大分割次数,flags为正则表达式用到的通用标志:

    1
    re.split(pattern, string, maxsplit=0, flags=0)

    参考示例:

    1
    2
    3
    4
    5
    >>> import re
    >>> s = 'AAAA,BBBB:CCCC;DDDD'
    >>> re.split(r'[,:;]', s)
    ['AAAA', 'BBBB', 'CCCC', 'DDDD']
    >>>

    如果在正则表达式里使用了捕获组也就是括号,则结果列表中也会包含捕获的内容:

    1
    2
    3
    4
    5
    >>> import re
    >>> s = 'AAAA,BBBB:CCCC;DDDD'
    >>> re.split(r'([,:;])', s)
    ['AAAA', ',', 'BBBB', ':', 'CCCC', ';', 'DDDD']
    >>>

    如果不想在结果中看到分隔符,但仍然想用括号对正则表达式模式进行分组,可以使用非捕获组,以(?:...)的形式指定,示例如下:

    1
    2
    3
    4
    5
    >>> import re
    >>> s = 'AAAA,BBBB:CCCC;DDDD'
    >>> re.split(r'(?:[,:;])', s)
    ['AAAA', 'BBBB', 'CCCC', 'DDDD']
    >>>

    指定最大分割次数:

    1
    2
    3
    4
    5
    6
    7
    >>> import re
    >>> s = 'AAAA,BBBB:CCCC;DDDD'
    >>> re.split(r'[,:;]', s, 1)
    ['AAAA', 'BBBB:CCCC;DDDD']
    >>> re.split(r'[,:;]', s, 2)
    ['AAAA', 'BBBB', 'CCCC;DDDD']
    >>>

    由此可见,当指定最大分割次数maxsplit时,结果列表长度为maxsplit+1
    指定正则表达式中的通用标志flags:

    1
    2
    3
    4
    >>> import re
    >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
    ['0', '3', '9']
    >>>
  • 相关阅读:
    自己编译linux内核
    codeblocks中文输入及控制台乱码
    c快速学习代码
    二分法求方程解
    苹果公司前任首席执行官乔布斯语录
    html5特性
    lamp server快速搭建
    poj 1247 Magnificent Meatballs 解题报告
    Ural 1005 Stone Pilet 解题报告
    Ural 1020 Rope 解题报告
  • 原文地址:https://www.cnblogs.com/confessionlouis/p/9224654.html
Copyright © 2011-2022 走看看