通过特定的定界符对字符串进行操作并写入文本文件

艾哈迈德·艾曼·易卜拉欣

我正在编写一个函数,该函数将文件updates.txt作为输入。该文件如下所示:

---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
    Type: 16(BGP4MP)
    Subtype: 4(BGP4MP_MESSAGE_AS4)
    Length: 39
BGP4MP_MESSAGE_AS4
    Peer AS Number: 37989
    Local AS Number: 12654
    Interface Index: 0
    Address Family: 1(IPv4)
    Peer IP Address: 203.123.48.6
    Local IP Address: 193.0.4.28
BGP Message
    Marker: -- ignored --
    Length: 19
    Type: 4(KEEPALIVE)
---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
    Type: 16(BGP4MP)
    Subtype: 4(BGP4MP_MESSAGE_AS4)
    Length: 118
BGP4MP_MESSAGE_AS4
    Peer AS Number: 1836
    Local AS Number: 12654
    Interface Index: 0
    Address Family: 1(IPv4)
    Peer IP Address: 146.228.1.3
    Local IP Address: 193.0.4.28
BGP Message
    Marker: -- ignored --
    Length: 98
    Type: 2(UPDATE)
    Withdrawn Routes Length: 0
    Total Path Attribute Length: 71
    Path Attribute Flags/Type/Length: 0x40/1/1
        ORIGIN: 0(IGP)
    Path Attribute Flags/Type/Length: 0x40/2/42
        AS_PATH
            Path Segment Type: 2(AS_SEQUENCE)
            Path Segment Length: 10
            Path Segment Value: 1836 174 6453 37282 37088 37629 37629 37629 37629 37629
    Path Attribute Flags/Type/Length: 0x40/3/4
        NEXT_HOP: 146.228.1.3
    Path Attribute Flags/Type/Length: 0xc0/8/12
        COMMUNITY: 1836:110 1836:6000 1836:6031
    NLRI: 154.65.7.0/24
---------------------------------------------------

该文件是一系列“块”。每个块都包含在虚线之间

---------------------------------------------------
# Block (n)
---------------------------------------------------
# Block (n+1)
---------------------------------------------------
# Block (n+2) , etc

我想逐块读取整个文件,并返回仅包含以下字段行的文本文件:时间戳,对等AS编号,本地AS编号,对等IP地址,本地IP地址。

生成的.txt文件应如下所示:

---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
BGP4MP_MESSAGE_AS4
    Peer AS Number: 37989
    Local AS Number: 12654
    Peer IP Address: 203.123.48.6
    Local IP Address: 193.0.4.28
---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
BGP4MP_MESSAGE_AS4
    Peer AS Number: 1836
    Local AS Number: 12654
    Peer IP Address: 203.123.48.6
    Local IP Address: 193.0.4.28
---------------------------------------------------

理想情况下,我想用新的文本文件覆盖updates.txt,以免浪费空间,并将其保存在新目录“ Parsed Updates”中。

我知道这是最小的,因为我坚持使用破折号定界符,但是我的代码如下所示:

import sys
import os

def parser(filename):
    info = open(filename, 'r+')
    info.read()

    #Here comes the string manipulation code
    #info.split( '---------------------------------------------------')

    info.close()
    print 'The file has been parsed successfully !!'

def main():
    parser('updates.txt')


if __name__=='__main__':
    main()
山·瓦勒鲁
>>> with open('results.txt', 'wb') as r:
...     with open('updates.txt', 'rb') as u:
...         for line in u.readlines():
...             if '-'*51 in line:
...                 r.write(line)
...             else:
...                 if any(field in line for field in ['Timestamp', 'Peer AS Number', 'Local AS Number', 'Peer IP Address', 'Local IP Address','MRTHeader']):
...                     r.write(line)

您的结果文件将如下所示:

$ cat results.txt
---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
    Peer AS Number: 37989
    Local AS Number: 12654
    Peer IP Address: 203.123.48.6
    Local IP Address: 193.0.4.28
---------------------------------------------------
MRT Header
    Timestamp: 1453939200(2016-01-28 01:00:00)
    Peer AS Number: 1836
    Local AS Number: 12654
    Peer IP Address: 146.228.1.3
    Local IP Address: 193.0.4.28
---------------------------------------------------

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过特定的定界符对字符串进行操作并写入文本文件

来自分类Dev

使用2个字符串定界符C选择文本文件的一部分

来自分类Dev

从文本文件打印定界字符串

来自分类Dev

通过定界符解析文本文件并使用R输出多个文件

来自分类Dev

将字符串写入文本文件

来自分类Dev

如何使用Racket语言在纯文本文件的特定行写入字符串?

来自分类Dev

读取文本文件,按定界符分割,从特定行获取数据并将输出保存到文件

来自分类Dev

如何在文本文件中搜索字符串并根据结果执行特定操作

来自分类Dev

使用默认定界符与用户定义定界符进行字符串拆分

来自分类Dev

使用保存定界符将字符串按多个定界符进行拆分

来自分类Dev

C ++通过定界符分割字符串并保持定界符在结果中

来自分类Dev

Bash Shell:在特定字符串和定界符之间进行grepping吗?

来自分类Dev

搜索文本文件,直到特定的字符串

来自分类Dev

从文本文件中提取特定的字符串

来自分类Dev

从文本文件中获取特定字符串

来自分类Dev

导入文本文件选项卡定界符,变量名称超过32个字符

来自分类Dev

通过定界符将字符串批量拆分为文件中的新行

来自分类Dev

如何从文本文件导入数据而没有任何定界符或分隔符?

来自分类Dev

如何从文本文件导入数据而没有任何定界符或分隔符?

来自分类Dev

PowerShell-删除文本文件中定界符之间的多行文本

来自分类Dev

通过单独的定界符将字符串分割为列表,但仅按所述定界符的某些实例进行

来自分类Dev

Java如何通过分隔符字符串将文本文件分隔为文件

来自分类Dev

从文本文件读取列而没有清晰的定界符

来自分类Dev

使用任意定界符将文本文件作为矩阵读入MatLab

来自分类Dev

在c#中查找csv或文本文件的定界符

来自分类Dev

使用双管道定界符读取大文本文件

来自分类Dev

到达定界符时跳到文本文件的下一行

来自分类Dev

解析带有两个“空格”定界符的文本文件

来自分类Dev

将包含多个定界符的文本文件转换为CSV

Related 相关文章

  1. 1

    通过特定的定界符对字符串进行操作并写入文本文件

  2. 2

    使用2个字符串定界符C选择文本文件的一部分

  3. 3

    从文本文件打印定界字符串

  4. 4

    通过定界符解析文本文件并使用R输出多个文件

  5. 5

    将字符串写入文本文件

  6. 6

    如何使用Racket语言在纯文本文件的特定行写入字符串?

  7. 7

    读取文本文件,按定界符分割,从特定行获取数据并将输出保存到文件

  8. 8

    如何在文本文件中搜索字符串并根据结果执行特定操作

  9. 9

    使用默认定界符与用户定义定界符进行字符串拆分

  10. 10

    使用保存定界符将字符串按多个定界符进行拆分

  11. 11

    C ++通过定界符分割字符串并保持定界符在结果中

  12. 12

    Bash Shell:在特定字符串和定界符之间进行grepping吗?

  13. 13

    搜索文本文件,直到特定的字符串

  14. 14

    从文本文件中提取特定的字符串

  15. 15

    从文本文件中获取特定字符串

  16. 16

    导入文本文件选项卡定界符,变量名称超过32个字符

  17. 17

    通过定界符将字符串批量拆分为文件中的新行

  18. 18

    如何从文本文件导入数据而没有任何定界符或分隔符?

  19. 19

    如何从文本文件导入数据而没有任何定界符或分隔符?

  20. 20

    PowerShell-删除文本文件中定界符之间的多行文本

  21. 21

    通过单独的定界符将字符串分割为列表,但仅按所述定界符的某些实例进行

  22. 22

    Java如何通过分隔符字符串将文本文件分隔为文件

  23. 23

    从文本文件读取列而没有清晰的定界符

  24. 24

    使用任意定界符将文本文件作为矩阵读入MatLab

  25. 25

    在c#中查找csv或文本文件的定界符

  26. 26

    使用双管道定界符读取大文本文件

  27. 27

    到达定界符时跳到文本文件的下一行

  28. 28

    解析带有两个“空格”定界符的文本文件

  29. 29

    将包含多个定界符的文本文件转换为CSV

热门标签

归档