如何在python中从文件中读取“well”

2024-05-23 19:48:25 发布

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

我必须读一个格式总是一样的文件。你知道吗

据我所知,它的格式与readline()和tokenize相同。但我想有一种方法可以读得更多,怎么说“好看”。你知道吗

我必须读取的文件的格式如下:

Nom NMS-01
MAC AAAAAAAAAAA
UDPport 2019
TCPport 9129

如果可能的话,我只想用一种不同的方式来阅读它而不必标记


Tags: 文件方法标记readlinemac格式方式nom
2条回答

熊猫有很多神奇的东西,所以也许这对你来说更漂亮?你知道吗

import pandas as pd

pd.read_csv('input.txt',sep = ' ',header=None,index_col=0)

这将为您提供一个数据帧,您可以进一步操作它:

0       1
Nom     NMS-01
MAC     AAAAAAAAAAA
UDPport 2019
TCPport 9129

你的问题似乎暗示“标记化”是一种神秘而复杂的过程。但事实上,您正试图做的事情正是标记化。你知道吗

下面是一种非常有效的方法,可以读取显示的文件,将其分解为令牌,并将其存储在数据结构中:

def read_file_data(data_file_path):
    result = {}
    with open(data_file_path) as data_file:
        for line in data_file:
            key, value = line.split(' ', maxsplit=1)
            result[key] = value
    return result

这并不复杂,代码不多,不需要第三方库,而且很容易使用:

data = read_file_data('path/to/file')
print(data['Nom'])  # prints "NMS-01"

现在,这个实现对文件的结构做了很多假设。除此之外,它还假设:

  • 整个文件的结构为键/值对
  • 每个键/值对都适合一行
  • 文件中的每一行都是键/值对(没有注释或空行)
  • 键不能包含空格字符
  • 值不能包含换行符
  • 同一个键在文件中不会出现多次(如果出现,则可以接受最后一个给定值是唯一返回的值)

其中一些假设可能是错误的,但对于您提供的数据样本,它们都是正确的。你知道吗

更一般地说:如果要解析某种结构化数据,需要了解数据的结构以及值之间的分隔方式。这就是为什么像XML、JSON和YAML这样的常见结构化数据格式(以及许多其他格式!)是发明出来的。一旦你知道了你正在解析的语言标记化就是你编写的将语言与你输入的文本相匹配的代码。你知道吗

相关问题 更多 >