日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2024/10/8 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 split函数python 未定义_Python字符串方法split()中的一道坑 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

初看這個(gè)方法還挺好用的,用來(lái)切割字符串真是的是非常方便,返回的字符串?dāng)?shù)組也非常容易處理。

于是乎看了一眼就應(yīng)用到我的程序當(dāng)中去了。

用來(lái)切割如下形式的字符串

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] #取天數(shù)

……

成功的運(yùn)行了。

后來(lái)設(shè)置到crontab中自動(dòng)運(yùn)行,也能成功運(yùn)行,可是到了8月份的時(shí)候結(jié)果就不正常了。

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

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

日志格式看起來(lái)也沒(méi)問(wèn)題,然后不得已去調(diào)試源程序,發(fā)現(xiàn)切割的字符串亂七八糟的。

將s.split(' ')直接打印出來(lái)看,馬上就明白了:

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

數(shù)組第二個(gè)元素是一個(gè)空字符串,它代表了一個(gè)空格,原來(lái)spilt方法是嚴(yán)格按照過(guò)濾參數(shù)設(shè)置的,不會(huì)感知連續(xù)過(guò)濾的參數(shù)。

Jul 24之間相距一個(gè)空格,但是Aug 1之間就相距兩個(gè)空格,所以切割失敗,導(dǎo)致后來(lái)取得數(shù)據(jù)發(fā)生錯(cuò)誤。

此時(shí)有兩個(gè)解決辦法:

1.采用不帶參數(shù)的split(),它會(huì)把所有空格(空格符、制表符、換行符)當(dāng)作分隔符。

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

第二種方法應(yīng)用場(chǎng)景更多一些。

看看這個(gè)例子

a = 'hello++world!+'

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

>>>a.split('+')

['hello', '', 'world!', ''] #含有兩個(gè)空字符串

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

['hello', 'world!']

關(guān)于filter()方法的使用說(shuō)明:

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.

總結(jié)的經(jīng)驗(yàn):對(duì)函數(shù)方法的使用不要過(guò)于想當(dāng)然了,文檔簡(jiǎn)易可得的話(huà)最好把函數(shù)說(shuō)明看完。

總結(jié)

以上是生活随笔為你收集整理的split函数python 未定义_Python字符串方法split()中的一道坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。