我正在尝试解析 '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/