Python读取文件和解析行

时间:2017-01-25 17:02:17

标签: python

在某些目录(/ patch / in)中,我有名为:

的文件
S0000001.ARQ
S0000001.SRQ
S0000002.ARQ
S0000002.SRQ

......等等

每个文件的结构基本相同,但值不同,例如: `

----- BEGIN REQUEST -----
RQID=S0000001.ACE
POLICY=AUT
G=STEVEN
SN=JEENS
SERIALNUMBER=060294223
DOCUMENT=S0000001
----- END REQUEST -----

我想从dir读取每个文件并取出一些值以便以后使用它们。 我现在拥有的:

path = 'patch/in/*.ARQ'
files=glob.glob(path)   
for file in files:
    f=open(file, 'r')
    print '%s' %  f.readlines()

我想打印(存储)行:

POLICY=AUT
G=STEVEN
SN=JEENS
SERIALNUMBER=060294223
DOCUMENT=S0000001

然后是实际值:

AUT
STEVEN
EENS
060294223
S0000001

2 个答案:

答案 0 :(得分:0)

假设您读取文件的代码正常工作,您可以按如下方式解析这些行:

import re

...
...

lines = f.read()
keyValues = re.findall('^(\\w+)=(.+)$', lines, re.MULTILINE)

print('Lines containing key and value:')
for key, value in keyValues:
    print('{}={}'.format(key, value))

print('Actual values:')
for key, value in keyValues:
    print(value)

修改:更新了读取文件方法

答案 1 :(得分:0)

您可以随时打印包含'='的行,并在最后累积要打印的值。

path = 'patch/in/*.ARQ'
files=glob.glob(path)   
for filename in files:
    values = []
    with open(filename) as f:
        for line in f:
            if '=' in line:
                print line,
                key, value = line.strip().split('=')
                values.append(value)
    print '\n'.join(values)