从键/计数器文本创建python表

2024-09-29 00:17:01 发布

您现在位置:Python中文网/ 问答频道 /正文

文本文件示例

<counter name="abcb">70324360</counter>
<counter name="efghij">1094</counter>
<counter name="klm">0</counter>

我想创建一个函数,在调用计数器名称(efghij)时返回计数器编号(1094)。我真的不知道从哪里开始的文本文件。你知道吗


Tags: 函数name名称示例counter计数器编号文本文件
2条回答

您可以创建dict来保存计数器,而不是函数。读取文本文件('文件.txt,并使用re从每行提取数据。你知道吗

import re

counter = {}
re_counter = re.compile(r'name="(\w+)">(\d+)')
for line in open('file.txt'):
    match = re_counter.search(line)
    if match:
        counter[match.group(1)] = match.group(2)
print counter["efghij"]

您可以使用xml模块,该模块与您的文件结构非常接近:

s = '''
<counter name="abcb">70324360</counter>
<counter name="efghij">1094</counter>
<counter name="klm">0</counter>'''

import xml.etree.ElementTree as ET

tree = ET.fromstring('<root>' + s + '</root>')

def get_counter(name):
    for node in tree.iter('counter'):
        if node.attrib.get('name') == name:
            return node.text

用法:

get_counter('klm')

'0'

如果您是从文件中读取源代码,只需更改为这个并用<root>节点换行即可:

with open('your_file.txt', 'r') as f:
    s = f.read()

tree = ET.fromstring('<root>' + s + '</root>')
...

作为旁注:fromstring()如果没有根节点,则会失败,您可以在解析之前简单地包装它。你知道吗

相关问题 更多 >