Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一行中解析python中的参数_Python_Parsing - Fatal编程技术网

在一行中解析python中的参数

在一行中解析python中的参数,python,parsing,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: i

我有一个文件,其中包含以下行:

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 = []
????
任何帮助都将不胜感激。

使用re模块:

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

财政司司长

“姓名”

机器

“路径”


编辑:很抱歉,最后一个将打印机器:“path”,然后您必须重新进行拆分(“:”,n),然后它将打印机器,然后再打印“path”

我将使用正则表达式匹配这些行,边打印边存储结果:

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)

您可以使用正则表达式

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:只要名称、机器和路径都不包含空格,就可以在搜索模式之间使用空格。其他答案更可靠。你说你的文件看起来如何,所以我给了你一个答案,根据这个,如果你想要一个更可靠的答案,请给出更准确的描述。。。