我有一个文件有一些行:
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 = []
????
任何帮助都将不胜感激。
答案 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)然后它将打印机器然后"路径"