精华内容
下载资源
问答
  • python中的strip函数

    千次阅读 2014-04-28 19:27:15
    python中的strip()、lstrip()、rstrip()函数

    python有strip()、lstrip()、rstrip()这样的三个函数,官方文档是这样解释的:

    str.strip([chars])

    Return a copy of the string with the leading and trailing characters removed. Thechars argument is a string specifying the set of characters to be removed. If omitted orNone, thechars argument defaults to removing whitespace. Thechars argument is not a prefix or suffix; rather, all combinations of its values are stripped:

    >>> '   spacious   '.strip()
    'spacious'
    >>> 'www.example.com'.strip('cmowz.')
    'example'

    搜了一下,感觉讲的也不太明白,就翻阅了下python的源码:

    def strip(self, chars=None): 
    	return self.__class__(self.data.strip(chars))

    [chars]这个参数默认是None.

    下面是对应真正实现strip()函数的的c语言的源码:

    [chars]参数为空时:

    do_strip(PyBytesObject *self, int striptype)
    {
        char *s = PyBytes_AS_STRING(self);
        Py_ssize_t len = PyBytes_GET_SIZE(self), i, j;
    
        i = 0;
        if (striptype != RIGHTSTRIP) {
            while (i < len && Py_ISSPACE(s[i])) {
                i++;
            }
        }
    
        j = len;
        if (striptype != LEFTSTRIP) {
            do {
                j--;
            } while (j >= i && Py_ISSPACE(s[j]));
            j++;
        }
    
        if (i == 0 && j == len && PyBytes_CheckExact(self)) {
            Py_INCREF(self);
            return (PyObject*)self;
        }
        else
            return PyBytes_FromStringAndSize(s+i, j-i);
    }
    

    关键点在Py_ISSPACE宏,这个宏定义很巧妙,如下:

    #define Py_ISSPACE(c)  (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_SPACE)
    
    这个宏并非只检查[c]是否为<space>,如下'\t' '\n' '\v' '\f' '\r' ' '都被定义为PY_CTF_CPACE。

        PY_CTF_SPACE, /* 0x9 '\t' */
        PY_CTF_SPACE, /* 0xa '\n' */
        PY_CTF_SPACE, /* 0xb '\v' */
        PY_CTF_SPACE, /* 0xc '\f' */
        PY_CTF_SPACE, /* 0xd '\r' */
        PY_CTF_SPACE, /* 0x20 ' ' */
    
    即[chars]参数为空时,这些字符会被过滤;同时,由do_strip()函数的源码不难看出,不管是字符串的左侧还是右侧,碰到第一个非PY_CTF_SPACE字符就终止搜索。

    [chars]参数不为空时:

    do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj)
    {
        Py_buffer vsep;
        char *s = PyBytes_AS_STRING(self);
        Py_ssize_t len = PyBytes_GET_SIZE(self);
        char *sep;
        Py_ssize_t seplen;
        Py_ssize_t i, j;
    
        if (_getbuffer(sepobj, &vsep) < 0)
            return NULL;
        sep = vsep.buf;
        seplen = vsep.len;
    
        i = 0;
        if (striptype != RIGHTSTRIP) {
            while (i < len && memchr(sep, Py_CHARMASK(s[i]), seplen)) {
                i++;
            }
        }
    
        j = len;
        if (striptype != LEFTSTRIP) {
            do {
                j--;
            } while (j >= i && memchr(sep, Py_CHARMASK(s[j]), seplen));
            j++;
        }
    
        PyBuffer_Release(&vsep);
    
        if (i == 0 && j == len && PyBytes_CheckExact(self)) {
            Py_INCREF(self);
            return (PyObject*)self;
        }
        else
            return PyBytes_FromStringAndSize(s+i, j-i);
    }
    
    这个函数的重点在于memchr,其参数sep就是传入的chars,seplen就是sep的长度。

    memchr函数在这里的功能就是从sep中查找Py_CHARMASK(s[j])字符,Py_CHARMASK宏定义:

    #define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
    

    所以此函数与do_strip()函数的不同就是,把do_strip()函数要过滤的PY_CTF_SPACE字符换成了传入的[chars]字符而已。

    注:do_strip() do_xstrip()函数的源码来源于bytesobject,在unicodeobject中还有另一份实现,不过原理应该差不多,就不比较了。

    下图是一个小小的实验:





    展开全文
  • python中 split strip 函数

    千次阅读 2020-07-04 00:46:54
    s为字符串 strip:删除, split:分离 s.split(’.’) 按照分隔符 ‘.’ 将...s.strip() 删除段首断尾空白符(包括’\n’, ‘\r’, ‘\t’, ’ ') s.lstrip() 删除段首 空白符 s.rstrip() 删除段尾 空白符 ...

    s为字符串
    strip:删除, split:分离


    s.split(’.’) 按照分隔符 ‘.’ 将字符串进行分割,分割后返回类型为列表
    s.split() 等价于 s.split(’ '),不写分割复时,按空格进行分割,注意引号中有一个空格


    s.strip(‘2456’) 删除段首和段位含‘2456’的字符
    s.strip() 删除段首断尾的空白符(包括’\n’, ‘\r’, ‘\t’, ’ ')

    s.lstrip() 删除段首 的空白符
    s.rstrip() 删除段尾 的空白符

    展开全文
  • python中的strip函数用于删除,split函数用于分割Python strip() 函数用于移除字符串头尾指定的字符(默认为空格或换行符)。strip()方法语法:str.strip([chars]);参数chars -- 移除字符串头尾指定的字符。返回值...

    python中的strip函数用于删除,split函数用于分割。

    strip()方法

    Python strip() 函数用于移除字符串头尾指定的字符(默认为空格或换行符)。

    语法

    str.strip([chars]);

    参数

    chars -- 移除字符串头尾指定的字符。

    返回值

    返回移除字符串头尾指定的字符生成的新字符串。

     

    声明:s为字符串,rm为要删除的字符序列

    s.strip(rm)删除s字符串中开头、结尾处,位于 rm删除序列的字符

    s.lstrip(rm)删除s字符串中开头处,位于 rm删除序列的字符

    s.rstrip(rm)删除s字符串中结尾处,位于 rm删除序列的字符

    注意:

    1)rm为空时,默认删除空白符(包括'/n', '/r','/t', ' ')

    示例:

    >>> '       internal whitespace is kept       '.strip()
    'internal whitespace is kept 

    你还可在一个字符串参数中指定要删除哪些字符。

    示例:
    >>> '*** SPAM * for * everyone!!! ***'.strip(' *!')
    'SPAM * for * everyone' 
    这个方法只删除开头或末尾的指定字符,因此中间的星号未被删除。

    3)这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

    例如,

    >>> a = '123abc'

    >>> a.strip('21') '3abc'

    >>> a.strip('12') '3abc'

    结果是一样的

     

    split()方法

    Python split()函数通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串

    语法

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

    参数

    str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

    num -- 分割次数。

    返回值

    返回分割后的字符串列表。

    注意:如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。 

    展开全文
  • strip函数的最一般形式为: str.strip('序列‘) 其中,序列是一段字符串,该函数表示从头或者从尾部开始进行扫描,如果扫描的字符在序列字符串中,则剔除掉,一直到遇到一个不在序列字符串中的字符为止。 延伸的...

    [转载:感谢博客园的摇头耶稣]原文链接

    python中往往使用剥除函数strip()来对用户的输入进行清理。strip函数的最一般形式为:

    str.strip('序列‘)

    其中,序列是一段字符串,该函数表示从头或者从尾部开始进行扫描,如果扫描的字符在序列字符串中,则剔除掉,一直到遇到一个不在序列字符串中的字符为止。

    延伸的函数:

    str.lstrip('序列'),则表示仅从头部第一个字符开始扫描,如果扫描的字符在序列字符串中,则剔除掉,直到遇到一个不在序列字符串中的字符为止。

    str.rstrip('序列'),则表示仅从尾部第一个字符开始扫描,如果扫描的字符在序列字符串中,则剔除掉,直到遇到一个不在序列字符串中的字符为止。

    特别的情况,如果函数圆括号里面的序列字符串为空,则默认为剔除首尾部的空白(包括空格、制表符),即strip()、lstrip()、rstrip().

    举例说明一下:

    变量a初始为'abc bingo abc',第一次处理从头和从尾同时扫描,遇到a,b,c字符就剔除,得出结果' bingo '。

    第二次处理,注意此次strip函数参数不仅有a,b,c还有一个空格符,所以从头部的扫描会一直剔除到i为止,而尾部的扫描到空格就停住了。

    第三次,仅从头部开始扫描,遇到b就停止了。

    第四次,仅从尾部开始扫描,遇到a就停止了。

     注意区分strip()和strip(' ')和strip(''):

    前两个函数效果是一样的,都表示遇到剔除头尾的空白部分。第三个是strip('序列’)函数序列为空时的特殊情况,这种情况下不对字符串做任何处理(因为没有扫描的对比字符)。

    展开全文
  • python strip函数

    2019-09-16 08:51:57
    python 中的strip函数是去除 字符串首尾包含给定的字符组中的字符。 打个比方说: s = '1231251243534123332123' print(s.strip('123')) # 输出 51243534 就是将首尾中包含1,2,3这三个字符,全部删除。 我开始想...
  • python中的strip()函数

    2019-09-24 13:03:42
    Python strip() 方法用于移除字符串头尾指定字符(默认为空格)。 语法 strip()方法语法: str.strip([chars]); 参数 chars -- 移除字符串头尾指定字符。 返回值 返回移除字符串头尾指定字符生成...
  • Python strip函数

    2017-01-10 12:59:54
    strip()用于移除字符串头尾指定字符(默认为空格) 语法: str.strip([chars]) chars指是移除字符串头尾指定字符 返回移除字符串头尾指定字符生成新字符串。 实例: #...
  • Python中的strip()函数的用法

    千次阅读 2016-07-27 18:56:00
    Python strip() 方法用于移除字符串头尾指定字符(默认为空格)。 一、函数说明 strip() 语法:str.strip([rm]); 参数说明 rm: 移除字符串str开头、结尾处,位于rm序列字符。 返回值:返回移除字符串...
  • python中的strip()函数简介

    千次阅读 2014-11-24 21:51:12
    函数原型 ...s.strip(rm) 删除s字符串开头、结尾处,位于 rm删除序列字符 s.lstrip(rm) 删除s字符串开头处,位于 rm删除序列字符 s.rstrip(rm) 删除s字符串结尾处,位于 rm删除序列字符
  • 主要介绍了浅谈python中截取字符函数strip,lstrip,rstrip相关资料,需要朋友可以参考下
  • Pythonstrip 函数踩坑

    2018-11-14 14:52:00
    strip 函数用于去除字符串首尾的空格,当 chars 不为 None 时,则删除字符串首尾的 chars 中的字符。 当 chars=None 时,去除首尾空格,没啥好说的,我们来看 chars 不为 None 时的情况。 str = 'abc123abc' ...
  • python strip 函数

    2016-12-02 14:50:31
    python 函数 strip() str.strip("stkf") 删除 字符串str 左右两边 的指定字符,只要字符序列在 stkf 中,就可以被删除。 中间 “” 中的字符串可以任意组合。 str.strip(" \n\t\r" + chr(0x0a) + " abc") str....
  • https://www.runoob.com/python/att-string-strip.html 语法:str.strip([chars]) 作用:去除首尾字符
  • Python中strip()函数

    2019-11-21 16:00:03
    python API这样解释strip()函数: 声明:s为字符串,rm为要删除字符序列 s.strip(rm) 删除s字符串开头、结尾处,位于 rm删除序列字符 s.lstrip(rm) 删除s字符串开头处,位于 rm删除序列字符 s....
  • python中strip()函数的作用

    千次阅读 2019-05-24 21:52:42
    strip()函数的目的是去除字符串中的首位符号 中间位置的符号不管用 In [68]: " Strip fuction ".strip() Out[68]: 'Strip fuction' In [72]: "\tStrip fuction\n".strip() Out[72]: 'Strip fuction' In [73]: "\...
  • 1、python中for循环如何控制步长 foriinrange(开始/左边界, 结束/右边界, 步长): printi  例如 1 2 foriinrange(1,10,2): printi  等价于 1 for(i=...
  • python中的strip用法

    2019-09-28 00:27:15
    python中提供了三个函数.strip([chars])、.lstrip([chars])、.rstrip([chars])用于去除字符串左右空格/n,制表符/t,或者指定字符,这对于提取用户输入内容时非常友好,在处理用户误输入空格,制表符等方面,显得...
  • python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split功能,实际上strip是删除意思;而split则是分割意思。因此也表示了这两个功能是完全不一样strip可以删除字符串某些字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 676
精华内容 270
关键字:

python中的strip函数

python 订阅