初看这个方法还挺好用的,用来切割字符串真是的是非常方便,返回的字符串数组也非常容易处理。

于是乎看了一眼就应用到我的程序当中去了。

用来切割如下形式的字符串

s = 'Jul 24 21:38:25 luozw medusa.py[24707]: HOST=192.168.50.77 LOGIN=root PASSWORD=123456 SERVICE=ssh PORT=22'

month = s.split(' ')[0] #取月份

day = s.split(' ')[1] #取天数

……

成功的运行了。

后来设置到crontab中自动运行,也能成功运行,可是到了8月份的时候结果就不正常了。

自己跑到八月份的日志文件里看

Aug 1 21:38:25 luozw medusa.py[24707]: HOST=192.168.50.77 LOGIN=root PASSWORD=123456 SERVICE=ssh PORT=22

日志格式看起来也没问题,然后不得已去调试源程序,发现切割的字符串乱七八糟的。

将s.split(' ')直接打印出来看,马上就明白了:

['Aug', '', '2', '21:38:25', 'luozw', 'medusa.py[24707]:', 'HOST=192.168.50.77', 'LOGIN=root', 'PASSWORD=123456', 'SERVICE=ssh', 'PORT=22']

数组第二个元素是一个空字符串,它代表了一个空格,原来spilt方法是严格按照过滤参数设置的,不会感知连续过滤的参数。

Jul 24之间相距一个空格,但是Aug 1之间就相距两个空格,所以切割失败,导致后来取得数据发生错误。

此时有两个解决办法:

1.采用不带参数的split(),它会把所有空格(空格符、制表符、换行符)当作分隔符。

2.filter(None, s.split(' '))

第二种方法应用场景更多一些。

看看这个例子

a = 'hello++world!+'

如何取得'hello'和'world'呢?

>>>a.split('+')

['hello', '', 'world!', ''] #含有两个空字符串

>>>filter(None, a.split('+'))

['hello', 'world!']

关于filter()方法的使用说明:

filter(...)

filter(function or None, sequence) -> list, tuple, or string

Return those items of sequence for which function(item) is true. If

function is None, return the items that are true. If sequence is a tuple

or string, return the same type, else return a list.

总结的经验:对函数方法的使用不要过于想当然了,文档简易可得的话最好把函数说明看完。

split函数python 未定义_Python字符串方法split()中的一道坑相关推荐

  1. split函数python 未定义_Python之Split函数

    python中的split()函数用来拆分一个字符串,通过指定的分隔符对字符串进行切割,返回切割后的字符串列表list. split()函数用法: str.split(str=' ',num = st ...

  2. split函数python 未定义_python split函数基本用法

    Python split()方法描述: Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分割成 (num+1) 个子字符串.语法: str.split(st ...

  3. split函数python统计英文单词_Python实现统计英文单词个数及字符串分割代码

    Python实现统计英文单词个数及字符串分割代码 这篇文章主要介绍了Python实现统计英文单词个数及字符串分割方法,本文分别给出代码实例,需要的朋友可以参考下 字符串分割 代码如下: str=&qu ...

  4. python调用函数出现未定义_python – 为什么函数参数之外的“self”会给出“未定义”的错误?...

    看看这段代码: class MyClass(): # Why does this give me "NameError: name 'self' is not defined": ...

  5. isalpha函数 python怎么用_Python字符串| isalnum()和isalpha()方法以及示例

    1)isalpha()方法 isalpha()如果字符串的所有字符都是字母(" A"至" Z"之间以及" a"至" z" ...

  6. anaconda警告python未激活_Python位于conda env中,但尚未在Windows virtual en中激活

    我创建了一个Windows(10)Python虚拟环境(env3.7.3).当我打开一个在virtual env中激活的cmd窗口时,在virtual env中启动Python时会收到以下警告消息: ...

  7. python自关联_Django之Mode的外键自关联和引用未定义的Model方法

    Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(sup ...

  8. ES6/02/创建对象,构造函数和原型,原型和原型链,this指向,类,ES5新增的方法,数组方法,回调函数,ES5新增的字符串方法,ES5中新增的对象方法

    创建对象 1,利用new Object()创建对象 var obj1 =new Object(); 2,利用对象字面量创建对象 var obj2={}; 3,利用构造函数创建对象 function S ...

  9. Python 爬虫中国知网论文过程中遇到的坑及解决办法

    假期,老师给布置了 Python 爬虫中国知网论文的任务,目前实现了登录和搜索功能,先写一下遇到的坑和解决办法吧. Python 爬虫中国知网论文过程中遇到的坑及解决办法 一. selenium 模块 ...

最新文章

  1. Linux安全管理:一,sshd配置
  2. java 线程崩溃_java语言中application异常退出和线程异常崩溃的捕获方法,并且在捕获的钩子方法中进行异常处理...
  3. namecheap教程
  4. java 一元一次方程求解_七年级一元一次方程概念和解法,掌握这些就够了!
  5. OpenGL 持久映射分形的实例
  6. JS-函数(匿名-自调用-回调)-递归
  7. 学习云计算学哪种编程语言_您应该学习哪种编程语言?
  8. java如何排除多余的依赖_Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系...
  9. mysql 游标中实现递归_mysql中实现递归查询?
  10. Unity延迟和重复调用方法
  11. DE29 Matrix Exponentials
  12. 航天信息金税盘接口 js 调用
  13. 系统架构师(十七)系统可靠性分析与设计
  14. 《菜鸟教程》C语言学习
  15. QTableView和QTableWidget的区别是什么?
  16. 如何提取pcap文件中的TCP流
  17. HTML/CSS网页制作-----家居网
  18. RocketMq客户端日志参数设置
  19. freemaker生成doc文档(特殊字符导致异常)
  20. 发那科服务器显示1,发那科31i系统401报警处理一例

热门文章

  1. 【小米笔试题】二分查找算法的变形
  2. input python_python input 详解
  3. sklearn朴素贝叶斯分类器_朴素贝叶斯原理
  4. Cpp 对象模型探索 / 虚基类表作用
  5. 启明云端1.54寸串口屏使用经验分享
  6. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
  7. 计算机软考中级网络工程师,如何复习计算机软考中级网络工程师更有效
  8. 求最大素数的c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  9. VS Code阅读Android源码
  10. qt 进程打开excel_Qt QAxObject操作excel文件过程总结(转):(示例代码)