1. 程式人生 > >python實現readline去掉換行符 及其他特殊符

python實現readline去掉換行符 及其他特殊符

$1 模塊 換行 目前 處理 compile 實現 11.2 3.0.0

剛剛用python的readline(s)讀取文件的發現進行後續處理的時候總是會出現格式上等的一些小錯誤,後來想起來是因為文件換行符等一些符號(\n\r\t)也會被readline(s)讀取到,以下是我用到的小方法

舉個栗子吧,以下是我的文件內容:

In [1]: cat /tmp/ip.txt
111.231.0.0/16
122.152.0.0/16
140.143.0.0/16
59.110.0.0/16
106.75.0.0/16

將文件讀到變量 f 中,然後執行redline發現其實裏面還包括了換行符 ‘\n‘:

In [2]: f = open("/tmp/ip.txt",‘r‘)
In [3]: f.readline()
Out[3]: ‘111.231.0.0/16\n‘

我們可以通過split方法將需要的內容切割出來得到下面的結果,但是還不是我們真正想要的,此時的結果為一個列表:

In [4]: f.readline().split("\n")
Out[4]: [‘122.152.0.0/16‘, ‘‘]

最後我們可以通過索引的方式將前面的內容取出,達到目的,最後將這個內容送到其他的流程進行處理即可。

In [5]: f.readline().split("\n")[0]
Out[5]: ‘140.143.0.0/16‘

可能有的同學會問,那\r\t\n都存在的情況呢?

比如目前讀到的行為:

 ‘\t192.168.11.10/32\n‘

通過replace方法替換成空:

a = f.readline().replace(‘\r‘,‘‘).replace(‘\n‘,‘‘).replace(‘\t‘,‘‘)

還可以通過re模塊的sub方法:Sub(replacement,string[,count =0 ])

In [37]: import re
In [38]: a=re.compile(‘(\t|\n|\r)‘)
In [39]: b=a.sub(‘$‘,‘\t111.231\r.0.0/16\n‘) #後面的內容通過定義的正則,將符合的內容替換成‘$‘處的內容
In [40]: b
Out[41]: ‘$111.231$.0.0/16$‘

內容比較簡單,希望可以幫到需要的同學

python實現readline去掉換行符\n及其他特殊符