精华内容
下载资源
问答
  • str.split和re.split中空格的区别
    千次阅读
    2020-12-17 19:45:07

    一、str.split和re.split的基本用法

    1、str.spli的基本用法

    现用下面的文件:

    1 maqing:abc123

    我们要建立一个用户名和用户密码的匹配关系:

    1 with open("test.txt","r") as file:2 list =file.readlines()3 for line inlist:4 user,pwd =line.strip().split(":") #split按照“:”将文件中内容分为两个值,然后再分别赋值给user,pwd5 print("我是用户名:",user)6 print("我是用户密码:",pwd)

    输出结果如下:

    1 我是用户名: maqing2 我是用户密码: abc123

    2、re.split的基本用法

    Python的str类有split方法,但是这个split方法只能根据指定的某个字符分隔字符串,如果要同时指定多个字符来分隔字符串,该怎么办呢?

    幸运的是python的re模块中提供的split方法可以用来做这件事情,如下代码示例:

    1 importre2 re.split('; |,',str)

    实例:

    1 >>> a='Beautiful, is; better*than\nugly'

    2 >>> importre3 >>> re.split('; |, |\*|\n',a)4 ['Beautiful', 'is', 'better', 'than', 'ugly']

    二、str.split("\s")与re.split("\s",str)的区别

    str.split("\s")与re.split("\s",str)是不一样的。

    两者区别如下:

    1,str.split("\s")是照字面上来按照"\s"字符来分割字符串

    2,re.split("\s", str)是按照空白来分割,因为正则表达式中的"\s"就是空白space的意思

    另外,正则表达式中的中括号意为列举,如[abc]则能匹配含有a或b或c的字符串。

    另外python的lambda(实际来自lisp)则能定义匿名函数:

    看个例子:

    1 g = lambda x:x+1

    看一下执行的结果:

    g(1)

    >>>2

    g(2)

    >>>3

    当然,你也可以这样使用:

    lambda x:x+1(1)

    >>>2

    可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:

    1 def g(x):

    2 return x+1

    非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。

    所以了解了以上这些之后,第一眼看上去完全看不懂的语句现在可以懂了:

    get_dt_from_str = lambda time_str: datetime(tzinfo=utils.LOCAL_TIMEZONE, *([int(i) for i in re.split("[\s:-]", time_str)]))

    start_time = get_dt_from_str(start_time) if start_time else None

    上面这两个表达式,第一个表达式定义了一个函数,这个函数是根据传入的时间字符串参数,把这个时间字符串

    转化为当前时区的datetime参数,这个lambda的第一个变量就是函数传入的参数。在这个表达式中:

    re.split("[\s:-]", time_str) 是把time_str这个变量根据空白,:以及- 分割成为字符串list,并分别处理。

    所以第二个表达式就可以根据上面定义的匿名函数来直接调用使用了。

    更多相关内容
  • 相当于str.split()。参数:pat:str, 可选参数要分割的字符串或正则表达式。如果未指定,请在空白处分割。n:int, 默认为 -1 (all)限制输出的分割数。None,则0和-1将被解释为返回所有拆分。expand:bool, 默认为 ...

    在给定的分隔符/定界符周围拆分字符串。

    从开头的指定定界符字符串处分割Series /Index中的字符串。相当于str.split()。

    参数:

    pat:str, 可选参数要分割的字符串或正则表达式。如果未指定,请在空白处分割。

    n:int, 默认为 -1 (all)限制输出的分割数。None,则0和-1将被解释为返回所有拆分。

    expand:bool, 默认为 False将拆分的字符串展开为单独的列。

    如果True,返回DataFrame /MultiIndex扩展维。

    如果False,返回包含字符串列表的Series /Index。

    返回值:

    Series类型匹配调用者,除非expand=True(请参阅注释)。

    注意:

    的处理n关键字取决于找到的分割数:

    如果发现分裂>n,先做n仅拆分

    如果发现分裂<=n,进行所有拆分

    如果对于某行,找到的分割数

    如果使用expand=True, Series 和索引调用者分别返回DataFrame和MultiIndex对象。

    例子:

    >>> s = pd.Series(["this is a regular sentence",

    ... "https://docs.python.org/3/tutorial/index.html",

    ... np.nan])

    0 this is a regular sentence

    1 https://docs.python.org/3/tutorial/index.html

    2 NaN

    dtype:object

    在默认设置中,字符串由空格分隔。

    >>> s.str.split()

    0 [this, is, a, regular, sentence]

    1 [https://docs.python.org/3/tutorial/index.html]

    2 NaN

    dtype:object

    没有n参数,输出rsplit和split一样

    >>> s.str.rsplit()

    0 [this, is, a, regular, sentence]

    1 [https://docs.python.org/3/tutorial/index.html]

    2 NaN

    dtype:object

    的n参数可用于限制定界符上的分割数。输出split和rsplit是不同的。

    >>> s.str.split(n=2)

    0 [this, is, a regular sentence]

    1 [https://docs.python.org/3/tutorial/index.html]

    2 NaN

    dtype:object

    >>> s.str.rsplit(n=2)

    0 [this is a, regular, sentence]

    1 [https://docs.python.org/3/tutorial/index.html]

    2 NaN

    dtype:object

    的pat参数可用于按其他字符分割。

    >>> s.str.split(pat = "/")

    0 [this is a regular sentence]

    1 [https:, , docs.python.org, 3, tutorial, index...

    2 NaN

    dtype:object

    使用时expand=True,拆分后的元素将展开为单独的列。如果存在NaN,它将在拆分过程中传播到整个列中。

    >>> s.str.split(expand=True)

    0 1 2 3

    0 this is a regular

    1 https://docs.python.org/3/tutorial/index.html None None None

    2 NaN NaN NaN NaN \

    4

    0 sentence

    1 None

    2 NaN

    对于稍微复杂的用例,例如从url拆分html文档名称,可以使用参数设置的组合。

    >>> s.str.rsplit("/", n=1, expand=True)

    0 1

    0 this is a regular sentence None

    1 https://docs.python.org/3/tutorial index.html

    2 NaN NaN

    当显式使用正则表达式时,请记住转义特殊字符。

    >>> s = pd.Series(["1+1=2"])

    >>> s.str.split(r"\+|=", expand=True)

    0 1 2

    0 1 1 2

    展开全文
  • 问题:如何利用python将字符串"a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"转换成下表格式,如图所示:观察到在字符...['a,b,c,d','1,2,3,4','5,6,7,8','9,10,11,12']然后对列表的每个元素再次使用split方法,返回如...

    问题:

    如何利用python将字符串"a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"转换成下表格式,如图所示:

    观察到在字符串中,实际上每隔4个字符有一个换行符'\n',所以可以利用字符串的split方法进行拆分,返回一个如下的列表:

    ['a,b,c,d','1,2,3,4','5,6,7,8','9,10,11,12']

    然后对列表中的每个元素再次使用split方法,返回如下的列表:

    [['a','b','c','d'],[1,2,3,4],[5,6,7,8],[9,10,11,12]]

    这样就可以利用DataFrame生成上图的表格了。

    代码如下:

    import pandas as pd

    s = "a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"

    lst = []

    for sep in s.split('\n'):

    • lst.append(sep.split(','))

    df = pd.DataFrame(lst[1:], columns=lst[0])

    对上述代码,可以利用列表推导式来进行改写一下,提升效率

    import pandas as pd

    s = "a,b,c,d\n1,2,3,4\n5,6,7,8\n9,10,11,12"

    lst = [sep.split(',') for sep in s.split('\n')]

    df = pd.DataFrame(lst[1:], columns=lst[0])

    小结:

    str.split(sep=None, maxsplit=-1):该方法为Python的内置方法,以列表的形式返回分割后的元素;sep:默认值是以连续的空格、换行符、制表符作为分割符

    s = 'a b c'

    s.split() # ['a', 'b', 'c']

    备注:

    1)无论元素之间的空格、换行符、制表符数量(且可以混用)(n>=1)为多少,且为连续的,都将作为一个分隔符进行分割,如:

    s = 'a b cd'

    s.split() # ['a', 'b', 'c']

    s = 'a b \n\n cd'

    s.split() # ['a', 'b' ,'c']

    2)若字符串各元素之间没有空格,且sep=None,返回整个字符串

    s = 'abcd'

    s.split() # ['abcd']

    3)若字符串内容恰好为分隔符,则会返回两个空字符列表

    s = 'abcd'

    s.split('abcd') # ['','']maxsplit:分割的最大次数,为分割几次的意思,从最左侧开始

    s = 'a<>b<>c<>d'

    #maxsplit=-1没有限制,能分几次分几次

    s.split(sep='<>', maxsplit=-1) # ['a', 'b', 'c', 'd']

    #maxsplit=0,表示不分割

    s.split(sep='<>', maxsplit=0) # ['a<>b<>c<>d']

    #maxsplit=1,表示分割一次

    s.split(sep='<>', maxsplit=1) # ['a', 'b<>c<>d']

    #maxsplit=10,当maxsplit设定的值超过最大可分割次数时,和maxsplit=-1一样,能分几次分几次

    s.split(sep='<>', maxsplit=10) # ['a', 'b', 'c', 'd']

    欢迎批评指正

    展开全文
  • 前面介绍了str.split()方法和re.split()方法,利用这两个方法任意一种方法,结合其他的方法,也可以完成工作,但是比较麻烦,具体的实现方式见文末。 这里我们利用pandas的Series.str.split()方法可以很方便的实...

    问题:

    现在手中有一表格,其中一列数据长成下列格式:三个元素挤在一个单元格中,现在需要把这三个元素进行分隔开,生成新的三列,该如何办?

    ea649aa1dd97464358b04c8fa1630bd5.png

    前面介绍了str.split()方法和re.split()方法,利用这两个方法任意一种方法,结合其他的方法,也可以完成工作,但是比较麻烦,具体的实现方式见文末。

    这里我们利用pandas的Series.str.split()方法可以很方便的实现。前面文章介绍了Python的内置方法str.split()和 re库中的re.split()方法,现在来介绍一下pandas.Series.str.split(),通过该方法来实现类似于Excel中的分列动作。

    在pandas.Series.str.split()方法其实调用了python的内置方法str.split()和re.spilt():

    31ac6b2586f816a303fbfcf064615a32.png

    从源代码中我们可以看到,pandas的str.split()方法确实调用了Python内置方法str.split()与re.split()方法,如果掌握了前两种方法,那pandas的split()方法也就不在话下了。

    pandas.Series.str.split(pat=None, n=-1, expand=False)的参数如下:

    • pat:string 或者 正则表达式,若为空,则为连续的空格,包括(换行符、空格、制表符)
    • n:默认值为-1,若为None, 0 都会被修改成-1(从上图中的源码也能看出来),即能分割多少次就分割多少次,与str.split()的n=-1,re.split()的maxsplit=0一致;
    • expand:决定了分割后的结果是分布在多列(返回DataFrame)还是以列表的形式分布在一列中(返回Series)

    参数比较简单,现在我们利用Series.stri.split()方法将下表格中的学生信息进行分割

    ea649aa1dd97464358b04c8fa1630bd5.png
    import pandas as pd
    df = pd.Series(['张三 一班 00001', '李四 二班 00002', '王五 三班 00003'])
    # 若expand为False,返回Series,只不过将结果以列表的形式存储
    result = df.str.split(pat=None, n=-1, expand=False)  
    print(result)

    29e66b06685fbd79bc9dd0e316654f2c.png

    要想完成分列动作,需要设置expand(展开的意思)的值为True

    df = pd.Series(['张三 一班 00001', '李四 二班 00002', '王五 三班 00003'])
    # 若expand为True,返回DataFrame,将分列后的结果存储在不同的列中(完成分列动作)
    result = df.str.split(pat=None, n=-1, expand=True).
             rename(columns={0:'姓名', 1:'班级', 2:'学号'})  
    print(result)

    ccaa7dc93606e3128a865c83668f1ee7.png

    小结:

    到目前为止,关于字符串的分割介绍了三个方法,有Python的内置方法str.split(),正则表达式re库的re.split()和pandas.Series.str.split()方法。

    • 若分隔符比较简单,如为 空格、换行符、某些特定的字符等等,可以直接用str.split();
    • 若分隔符比较复杂,如有多个不同的分隔符,可以利用re.split()方法会比较简单;
    • 若对表格中的字符串进行处理的话,这时可以优先考虑pandas.Series.str.split()。

    现在我们使用内置方法sr.split()来实现分列的动作:

    df = pd.Series(['张三 一班 00001', '李四 二班 00002', '王五 三班 00003'])
    result = pd.DataFrame(list(df.map(lambda x: x.split()), columns=['姓名', '班级','学号'])
    print(result)

    ccaa7dc93606e3128a865c83668f1ee7.png

    利用Python内置方法亦可以实现分列动作,但是涉及到的方法有list, map, lambda, DataFrame等等,比较麻烦,如果掌握了Series.str.split() 就可以很方便的实现了

    若有错误,敬请指正。

    往期相关文章:

    驿路向北:关于python中的re.split()方法的一点认识​zhuanlan.zhihu.com
    驿路向北:python的str.split()使用方法​zhuanlan.zhihu.com

    欢迎添加公众号:驿路向北,与我进行交流。

    0e4e30fe28c054f4fbd9c98e8647f1ba.png
    展开全文
  • Python中split()和os.path.split()两个函数: split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。 os.path.split():将文件名和路径分割开。 1、split()函数 语法:str.split(str=...
  • python re.split 用法

    2020-12-01 15:05:37
    针对上述情况,要想利用str.split()取得想要的结果,就要费点劲了,具体实现可见文末; 这时,就可以利用re.split()方法了 import re ​ s = '1,2,3,4,a,5,6,7,8,b,9,10,11,12' re.split(',..
  • python split()方法具体语法: 描述 Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。 语法 split() 方法语法: str.split(str="", num=string.co
  • python-对熊猫DataFram的列进行.str.split()操作后获取最后一个“列”我在pandas DataFrame有一列想要在一个空格上拆分。 使用temp2[0]进行拆分非常简单,但是我无法从最后一个条目创建新列。 当我temp2[:][-1...
  • 本文实例讲述了Python中str.join()简单用法。分享给大家供大家参考,具体如下:Python join() 方法用于将序列的元素以指定的字符连接生成一个新的字符串。其中,序列的元素应是字符串类型。join()方法语法:str....
  • pandas的字符串的分割之str.split()

    万次阅读 多人点赞 2019-11-22 19:30:20
    分列在我们日常工作经常用到,从各种系统导出的什么订单号、名称、日期很多都是复合组成的,这些列在匹配、合并时没有办法使用,我们经常需要将她们分开。 像下面的DataFrame, 城市是复合的,变电站也是复合的...
  • str.split() str.split(), 这个不支持正则表达式 text = '六安市政府采购中心受六安市人民医院的委托,现对“鼻声反射仪”项目进行竞争性谈判,欢迎具备条件的国内投标供应商参加投标.' text.split(',') ""...
  • str.split 拆分

    2021-01-04 18:10:27
    字符串方法 str.split(),Python 官方文档描述如下: help(str.split) Help on method_descriptor: split(self, /, sep=None, maxsplit=-1) Return a list of the words in the string, using sep as the ...
  • pandas字符串分割str.split()函数

    千次阅读 热门讨论 2021-10-02 15:28:06
    为了介绍python语言pandas库在数据分析的重要作用,本人打算以NBA球星勒布朗詹姆斯在2020-2021赛季常规赛个人数据为例对pandas相关函数进行详细说明。利用爬虫技术,在知名篮球网站虎扑爬取了勒布朗詹姆斯的数据...
  • 一、输入 分开输入: 显示提示信息: 二、输出 end参数 三、一行输入输出多个变量 # 因为int()只能执行一次返回一个值 四、str.format() # 0表示format()方法的参数下标,对应于第一个参数 print('{0}'.format(3...
  • 问题描述: cookies取值如下(赋值给变量sc),有逗号,分号,怎么把这...sc_set = re.split('[,;]', sc) csrftoken=pBMYbL4Roe9XJ0AtwdXwXZERb9sqf4ai;expires=Tue,28-Jan-202004:23:45GMT;Max-Age=31449600;Path=...
  • Python中split()和os.path.split()两个函数,具体作用如下: split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) os.path.split():按照路径将文件名和路径分割开 一、函数...
  • 主要介绍了python中split方法用法,实例分析了split方法的功能及相关使用技巧,非常具有实用价值,需要的朋友可以参考下
  • Python str split方法

    千次阅读 2018-08-25 17:37:29
    描述 split()函数是Python字符串...使用split()函数将字符串分割后,返回的是一个列表,列表存储着分割后的每个子串。 语法及参数 str.split(string, num) 名称 含义 备注 str 待分割的字符串...
  • Python split()方法详解:分割字符串

    千次阅读 2020-12-16 02:19:48
    原标题:Python split()方法详解:分割字符串Python ,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。注意,这里所说的方法,指的是...
  • pandas.series.str.split()语法理解

    千次阅读 2018-12-03 13:11:06
    一直对.str不能理解,那么先在文档找到。 PS:值得注意的是在construtor的class里面才能查到str ...所以Series.str更像是把一个series对象转换成一个StringMethods对象(这个对象里面有很多可用的string处理方法...
  • 描述split()函数是Python字符串函数...使用split()函数将字符串分割后,返回的是一个列表,列表存储着分割后的每个子串。语法及参数str.split(string, num)实例1. 所有参数都省略s = 'Hello world!'d = s.split()...
  • 您可以使用tolist方法作为中介:In [99]: import pandas as pdIn [100]: d1 = pd.DataFrame({'ticker' : ['spx 5/25/2001 p500', 'spx 5/25/2001 p600', 'spx 5/25/2001 p700']})In [101]: d1.ticker.str.split().to...
  • 使用`str.split()`通过指定分隔符对字符串进行切片——输出的是一个列表list二、列表(list)>>> 字符串(str)1. 使用`str.join()`方法把单个字符串用另一个样式连接在一起 一、字符串(str) >>> ...
  • python中字符串str的strip()方法str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉。例1:str=" ABC"print(str.strip())--->ABC例2:str = "\t AA"print(str)print(str.strip())--->AAAA...
  • 使用Pandas str.get()方法获取通过位置的元素。此方法适用于整个系列的字符串,数值甚至列表。每次都必须给.str加上前缀,以使其与Python的默认get()方法区分开。用法:Series.str.get(i)参数:i:要提取的...
  • 在将dataframe的一列的所有数据使用string的内置方法时,我犯了一个错误 series.astype('str').split( )[0] 然后我得到的结果是这样的一个错误 AttributeError: 'Series' object has no attribute 'split' 在网上...
  • **1.os包提供了os.path.realpath()和os.path.split()两种方法来对获取文件名和路径名;**其具体的用法如下: 1.1.os.path.realpath():获取当前脚本的绝对路径 1.2.os.path.split():按照路径将文件名和路径分割开 ...
  • [Python]strsplit()的用法

    千次阅读 2015-05-24 11:22:16
    Python中字符串str有个内建方法split() 用于分割字符串,返回一个分割后的列表。这在处理数据非常方便好用。废话不多说,直接上代码:>>> aStr = 'data1 | data2 | data3 | data4 | data5' >>> ...
  • 本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法。分享给大家供大家参考,具体如下:re.split re.finditer re.findall@(python3)官方 re 模块说明文档re.compile() 函数编译正则表达式模式...
  • Python re.split方法分割字符串

    千次阅读 2019-07-10 10:12:45
    使用多个界定符分割字符串 问题 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的... 当你需要更加灵活的切割字符串的时候,最好使用re.split()方法: >>> line = 'asdf fjd...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,651
精华内容 31,460
关键字:

python中str.split的用法