如何在Python中读取两个点之间的文件

3

我有一个文件看起来像这样:

junk stuff NAME Test File Name VER 2.00 DATE 1/2/12 END useless stuff

另一个:

waste material NAME Test file 2 VER 1.78 DATE 1/8/13 END don't look at me, NOTREAL

如何解析它以获取3个值:名称、版本和日期?

1
这种说法并不是很有帮助。它到底会是什么样子?如果你无法提供一个确切的示例,那就展示一个重复出现的模式。 - Abbas
你能不能只是分割它,然后访问你的元素? - abhiasawa
从你的问题来看,答案似乎只是提取第2、4、6列,但我怀疑你的问题不仅仅是这样。 - Vaughn Cato
也许可以在每一行上使用正则表达式? - Loïc G.
1
你使用的确切正则表达式将取决于具体要求,但人们提出的使用正则表达式来提取感兴趣内容的一般思路是正确的。例如:在标签NAME和值之间可以有多个空格吗?如果我们有"NAME<空格><空格>Test",你希望得到的名称是"<空格>Test"还是"Test"? - Vaughn Cato
3个回答

4

将行加载到字符串中,然后使用一些正则表达式:

>>> re.findall(r'NAME (.+) VER (.+) DATE (.+)', 'NAME Test VER 2.00 DATE 1/2/12')
[('Test', '2.00', '1/2/12')]

3

使用正则表达式:

import re
line = 'NAME Test VER 2.00 DATE 1/2/12'
s = re.search(r'NAME (.+) VER (.+) DATE (.+)', line)
name = s.group(1)
version = s.group(2)
date = s.group(3)

0
一个通用的解决方案,不依赖于键名及其顺序。
s = 'NAME Test VER 2.00 DATE 1/2/12'
args = s.split(' ')

vars = {}
for i in xrange(0, len(args), 2):
  vars[args[i]] = args[i+1]

print vars # {'DATE': '1/2/12', 'VER': '2.00', 'NAME': 'Test'}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接