在一行中解析python中的参数

时间:2014-09-09 13:22:38

标签: python parsing

我有一个文件有一些行:

FS "name" machine:"path"
{
}

我想读取FS之后的任何内容并返回每个参数。我的意思是返回应该是名称,机器和路径。

Name:
    "/PF/B/"
    "/PF/A/"

Machine:
    FFFFFF..
    XXXXXX…

Path:
    “/PF/J”
    “/PF/K”

代码:

Def parse()
with open (myfile.txt) as f:
    for line in f:
if line.strip().startswith(‘FS’)
            Name = []
            Machine = []
            Path = []
????

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:4)

您可以使用正则表达式

import re
with open('myfile.txt') as f:
    found = re.findall(r'^FS\s*"([^"]*)"\s*([^:]*)\s*:\s*"([^"]*)"',f.read(),re.MULTILINE)
names, machines, paths = zip(*found)

编辑:检查' FS'在一行的开头

EDIT2:适用于搜索模式之间的可能空格

答案 1 :(得分:3)

我会使用正则表达式来匹配这些行,并按照我的方式存储结果:

import re

results = []
with open ('myfile.txt') as f:
  for line in f:
    match = re.match(r'FS\s+(".*?")\s+(.*?):(".*?")', line)
    if match:
      results.append(match.groups())

if results:
  print 'Name:\n' + '\n'.join('    '+result[0] for result in results)
  print 'Machine:\n' + '\n'.join('    '+result[1] for result in results)
  print 'Path:\n' + '\n'.join('    '+result[2] for result in results)

答案 2 :(得分:0)

使用re模块:

line = "FS "name" machine:"path""
for n in re.split(" ", line)
    print(n)

将打印:

FS

"名称"

"路径"

编辑:抱歉最后一个会打印机:"路径"然后你必须做re.split(":",n)然后它将打印机器然后"路径"