解析txt文件并保存在python变量中

发布于 2025-01-11 02:00:29 字数 779 浏览 0 评论 0原文

我有一个包含以下几行的 txt 文件

term accept_1  
protocol:: tcp 
destination-port:: 24  


term accept_2  
protocol:: tcp 
source-port:: 21  
source-port-port:: 22  

我想做的是以下内容: 对于每个术语,将协议保存在一个变量中,并将端口也保存​​在一个变量中(可能在一个数组中)。

我最终使用 PLY(Python Lex-Yacc)进行研究,但我发现它对于我的需求来说过于复杂。

我的实际代码:

with fileinput.FileInput(file_pol,inplace = True, backup ='.bak') as policy:
        for line in policy:
            if "destination-port::" in line:
                extract_port = re.findall("\d+",line)
            elif  "source-port::" in line:
                extract_port = re.findall("\d+",line) 

上面的代码基本上可以工作,但我错过了术语、协议、端口之间的关系。

I have a txt file containing following lines

term accept_1  
protocol:: tcp 
destination-port:: 24  


term accept_2  
protocol:: tcp 
source-port:: 21  
source-port-port:: 22  

What I am trying to do is the following:
for each term, save the protocol in one variable, and the ports too (probably in an array).

I end up my research with PLY (Python Lex-Yacc), but I found it overcomplicated for my needs.

My actual code:

with fileinput.FileInput(file_pol,inplace = True, backup ='.bak') as policy:
        for line in policy:
            if "destination-port::" in line:
                extract_port = re.findall("\d+",line)
            elif  "source-port::" in line:
                extract_port = re.findall("\d+",line) 

The above is basically working but I miss the relation between term, protocol, port.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

○闲身 2025-01-18 02:00:29

使用字典中的字典。

from collections import defaultdict

policy_dict = defaultdict(dict)

for line in policy:
    key, value = line.strip().split()
    if key == 'term':
        term = value
    elif key.endswith('::')
        policy_dict[term][key[:-2]] = value

Use a dictionary of dictionaries.

from collections import defaultdict

policy_dict = defaultdict(dict)

for line in policy:
    key, value = line.strip().split()
    if key == 'term':
        term = value
    elif key.endswith('::')
        policy_dict[term][key[:-2]] = value
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文