Python中split方法未定义时,如何处理字符串分割的难题?

2026-04-01 03:571阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计672个文字,预计阅读时间需要3分钟。

Python中split方法未定义时,如何处理字符串分割的难题?

初看这个方法还挺实用的,切割字符串非常方便,返回的字符串数组也易于处理。既然看了这么一眼,就应用到我的程序中去吧。使用切割如下格式:'字符串 + 初看这个方法还挺实用的',初看这个方法还挺实用的。

初看这个方法还挺好用的用来切割字符串真是的是非常方便返回的字符串数组也非常容易处理。于是乎看了一眼就应用到我的程序当中去了。用来切割如下形式的字

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

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

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

s Jul 24 21:38:25 luozw medusa.py[24707]: HOST192.168.50.77 LOGINroot PASSWORD123456 SERVICEssh PORT22

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

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

……

成功的运行了。

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

Python中split方法未定义时,如何处理字符串分割的难题?

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

Aug 1 21:38:25 luozw medusa.py[24707]: HOST192.168.50.77 LOGINroot PASSWORD123456 SERVICEssh PORT22

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

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

[Aug, , 2, 21:38:25, luozw, medusa.py[24707]:, HOST192.168.50.77, LOGINroot, PASSWORD123456, SERVICEssh, PORT22]

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

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

此时有两个解决办法

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

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

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

看看这个例子

a helloworld!

如何取得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.

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

标签:

本文共计672个文字,预计阅读时间需要3分钟。

Python中split方法未定义时,如何处理字符串分割的难题?

初看这个方法还挺实用的,切割字符串非常方便,返回的字符串数组也易于处理。既然看了这么一眼,就应用到我的程序中去吧。使用切割如下格式:'字符串 + 初看这个方法还挺实用的',初看这个方法还挺实用的。

初看这个方法还挺好用的用来切割字符串真是的是非常方便返回的字符串数组也非常容易处理。于是乎看了一眼就应用到我的程序当中去了。用来切割如下形式的字

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

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

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

s Jul 24 21:38:25 luozw medusa.py[24707]: HOST192.168.50.77 LOGINroot PASSWORD123456 SERVICEssh PORT22

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

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

……

成功的运行了。

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

Python中split方法未定义时,如何处理字符串分割的难题?

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

Aug 1 21:38:25 luozw medusa.py[24707]: HOST192.168.50.77 LOGINroot PASSWORD123456 SERVICEssh PORT22

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

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

[Aug, , 2, 21:38:25, luozw, medusa.py[24707]:, HOST192.168.50.77, LOGINroot, PASSWORD123456, SERVICEssh, PORT22]

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

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

此时有两个解决办法

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

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

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

看看这个例子

a helloworld!

如何取得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.

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

标签: