Python:解析具有各种字段计数的冒号分隔文件

标签 python parsing file delimiter

我正在尝试解析 'clientname'.txt 中具有以下格式的几个文件

hostname:comp1
time: Fri Jan 28 20:00:02 GMT 2011
ip:xxx.xxx.xx.xx
fs:good:45
memory:bad:78
swap:good:34
Mail:good

每个部分都由 : 分隔,但第 0、2、6 行有 2 个字段...第 1、3-5 行有 3 个或更多字段。 (我遇到的一个大问题是 time: 行,因为 20:00:02 实际上是一个时间,而不是 3 个单独的字段。

我有几个这样的文件需要解析。其中一些文件中有更多行具有多个字段。

...
for i in clients:
if os.path.isfile(rpt_path + i + rpt_ext):          # if the rpt exists then do this
    rpt = rpt_path + i + rpt_ext
    l_count = 0
    for line in open(rpt, "r"):
        s_line = line.rstrip()
        part = s_line.split(':')
        print part
        l_count = l_count + 1
else:                                               # else break
    break

首先,我先检查文件是否存在,如果存在,然后打开文件并解析它(最终)截至目前,我只是打印输出(打印部分)以确保解析正确。 老实说,我现在唯一遇到的麻烦是 time: field。我怎样才能将那条线与其他所有线区别开来?在我的所有报告文件中,时间字段始终位于第二行。

最佳答案

split 方法具有以下语法 split( [sep [,maxsplit]]) 如果给出了 maxsplit,它将生成 maxsplit+1 个部分。在您的情况下,您只需将 maxsplit 设为 1。只需 split(':',1) 即可解决您的问题。

关于Python:解析具有各种字段计数的冒号分隔文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4833948/

相关文章:

python - 调用局部变量和调用对象的实例变量之间有性能差异吗?

java - 使用 GSON 解析带有键和选项卡的 JSON 文件

ruby - Instagram用户页面解析(带代理,不带API)

python - 在 Django Admin 中保存 M2M "Through"内联

python - macOS : ModuleNotFoundError: No module named '_ctypes'

python - 如何从二进制文件中读取除最后 X 字节以外的所有字节?

python - 如何从文件中提取特定的行和列并将其保存在另一个文件中

C - 如何将(来自基于用户的输入)各种字符串存储在结构内的数组中?

python - 在 Swift 中测量 http HEAD 请求的响应时间

java - 将一串数字从已解析字符串的一部分更改为 int