python解析文本

在看书的时候看到下面的内容觉得很难看,想把回车符去掉,换行符直接换行。思想是遍历,遇到<cr>就直接索引加4,遇到<lf>换行并且索引加4,其他正常输出。
文本如下:

GET /cs453/index.html HTTP/1.1<cr><lf>Host: gaia.cs.umass.edu<cr><lf>User-Agent: Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) <cr><lf>Accept:ext/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5<cr><lf>Accept-Language: en-us,en;q=0.5<cr><lf>Accept-Encoding: zip,deflate<cr><lf>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<cr><lf>Keep-Alive: 300<cr><lf>Connection:keep-alive<cr><lf><cr><lf>

发现自己不会写代码,先从读文件开始吧:

f = open('data.txt', 'r')
data = f.read()
print(data)

这里说python中读取文件要这么写:

with open('/path/to/file', 'r') as f:
    data = f.read()

fro循环要怎么写呢?
通过序列索引迭代(参考):

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print '当前水果 :', fruits[index]

print第打印一个字符就要换行。
怎样使 Python 输出时不换行?

print('.', end='')

我想索引加3或者加4怎么办呢?发现python的for不能修改索引,可以用while。
python 中的for循环如何修改循环变量?

i = 0
length = len(seq)
while i < length:
    #just do it
    i += 1

终于写出来了:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 22 22:00:31 2018

@author: itsc
"""

filename = 'data.txt'
f = open(filename, 'r')
data = f.read()

i = 0
length = len(data)-5
while i < length:
    if data[i:i+4] == '<cr>':
        i += 3
    elif data[i:i+4] == '<lf>':
        print()
        i += 3
    else:
        print(data[i], end='')
    i += 1

输出:

GET /cs453/index.html HTTP/1.1
Host: gaia.cs.umass.edu
User-Agent: Mozilla/5.0 (Windows;U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax) 
Accept:ext/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: zip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection:keep-alive

真是菜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章