刚刚用 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$'
内容比较简单, 希望可以帮到需要的同学
来源: http://www.bubuko.com/infodetail-2684651.html