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