我在python中有一个包含软件包和版本号的列表,但它们没有像'package-0.14'那样列出 - 也就是说,版本号不是文件名的一部分。它的格式如下:
packagename = 0.14
我有另一个.txt文件,它有相同的信息和更多,这是一个问题。它的格式如下:
包:packagename
包装尺寸:100MB
版本:0.14
因此,不仅它们是行分隔的,它们在我需要以某种方式忽略的两个值之间有更多的信息。我需要包名称和版本号,因为它们彼此相关,所以我可以检查第一个列表中的值是否可以匹配.txt文件的值。
在python中有没有办法说“获取'Package:'的值,然后逐行获取”Version:“的值,所以我知道它是同一个包的版本?
答案 0 :(得分:0)
使用re
模块。
>>> import re
>>> s = '''
Package: packagename
Package size: 100MB
Version: 0.14
'''
>>> re.findall(r'(?s)\bPackage:\s*(\S+).*?\bVersion:\s*(\S+)', s)
[('packagename', '0.14')]
答案 1 :(得分:0)
将您的文件解析为字典,从字典中提取信息:
with open(filename) as f:
lines=f.readlines()
d=dict()
for line in lines:
line=line.strip()
if line:
(k,v)=line.split(":", 1)
d[k]=v
print("%s: %s" % (d['Package'], d['Version']))