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

1、str.spli的基本用法

现用下面的文件:

  1. 1 maqingabc123

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

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

输出结果如下:

  1. 我是用户名: maqing
  2. 我是用户密码: abc123

2、re.split的基本用法

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

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

  1. import re
  2. re.split('; |, ',str)

实例:

  1. >>> a='Beautiful, is; better*than\nugly'
  2. >>> import re
  3. >>> 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. 1 g = lambda x:x+1

  看一下执行的结果: 

  g(1)

  >>>2

  g(2)

  >>>3

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

  lambda x:x+1(1)

  >>>2   

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

  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和re.split中空格的区别的更多相关文章

  1. C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化

      一.字符串输入输出函数 1.  cin.get()   逐个字符输入输出 2.  cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...

  2. str.split()与re.split()的区别

    str.split(): >>>'hello, world'.split() >>>['hello,','world'] >>>'hello, w ...

  3. split(),strip,split("/")[-1] 和 split("/",-1)的区别

    Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法: str.split(str="",num=string.count(s ...

  4. String.split()与StringUtils.split()

    我们平时进行简单的字符串分割的时候,尽量不要用String自身的split方法,它是匹配正则表达式的,如果遇到$这种特殊字符,需要转义一下.用StringUtils.split()方法会更方便 使用a ...

  5. python split(),os.path.split()和os.path.splitext()函数用法

    https://blog.csdn.net/T1243_3/article/details/80170006   # -*- coding:utf-8 -*- """ @ ...

  6. StringUtils.split()和string.split()的区别

    场景 出于业务考虑,将多个字符串拼接起来时,使用的分隔符是;,;.如果要将这样一个拼接来的字符串分割成原本的多个字符串时,就需要使用到jdk自带的split()方法.不过因为公司的编程规范,改为使用了 ...

  7. Python关于去除字符串中空格的方法

    Python关于去除字符串中空格的方法 在编写程序时我们经常会遇到需要将字符串中的空格去掉的情况,通常我们可以使用下面几种解决方法: 1.strip()方法:该方法只能把字符串头和尾的空格去掉,但是不 ...

  8. C# Split的用法,Split分割字符串

    C# Split的用法,Split分割字符串 分割单个字串:string str="来自张三的亲切问候!;string[] strarry=str.Split(new string[] { ...

  9. split("\\s+") 和 split(" +") 有什么区别?

    原文地址:https://blog.csdn.net/it_taojingzhan/article/details/51968993 "hello world, this is Al&quo ...

随机推荐

  1. python中threading多线程

    python中有两个处理多线程的模块thread和threading.其中thread提供了多线程底层支持的模块,以低级原始的发那个是来处理和控制线程,使用起来较为复杂:而threading基于thr ...

  2. Owin and Startup class

    https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection ...

  3. linux 基本命令___0001

    参考公众号:生信媛 参考链接:每天一个linux命令(61):wget命令 参考链接:<sort帮你排序>-linux命令五分钟系列之二十六 参考链接:每天一个linux命令(34):du ...

  4. PHP开发框架

    利用PHP开发框架可以帮助你编写干净和可重用的代码.PHP开发框架遵循MVC设计模式,以确保能够明确区分逻辑和演示文稿.但是有关PHP框架的争论也不少,这是因为有的人喜欢性能,有的人喜欢文档,而有的人 ...

  5. 【bzoj5085】最大(二分+乱搞)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5085 这道题我们可以先二分答案,然后转化为判定是否有四角权值>=mid的矩形. ...

  6. Java C++ 比较 – 虚函数、抽象函数、抽象类、接口

    [转自]原文 Java – 虚函数.抽象函数.抽象类.接口 1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它 ...

  7. Python 正则表达式匹配小数

    不废话,直接上表达式 (\d+(\.\d+)?) 如: import re find_float = lambda x: re.search("\d+(\.\d+)?",x) .g ...

  8. C#验证类

    #region 是不是中国电话,格式010-85849685 /**////<summary> /// 是不是中国电话,格式010-85849685 ///</summary> ...

  9. Codeforces 870E Points, Lines and Ready-made Titles:并查集【两个属性二选一】

    题目链接:http://codeforces.com/problemset/problem/870/E 题意: 给出平面坐标系上的n个点. 对于每个点,你可以画一条经过这个点的横线或竖线或什么都不画. ...

  10. UML类图(一)-------概述+结构

    类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据.       1. 类       类(Class)封 ...