我必须在文本文件中找到变量的值。
我的文件采用以下格式:
AccountingStoragePort=8544
AccountingStorageUser=root
Name=touktouk Cards=45 Files=2015 State=UNKNOWN
如何获取例如Files的值(因此2015)
在这个文件中有1个“变量”/行或几个用空格分隔。每个值都是唯一的(我的文件中没有2个文件)
另一方面,“文件”可以在任何行=>中找到例如,在第3行或第150行。
我无法修改此文件以与ConfigParser兼容。
我的conf文件的评论以“#”开头,我必须排除这些研究。
对于排除评论行我试试这个但是它不起作用:
match = re.search(r"(?!#\s*)\bFiles=(\d+)", s)
我发现了问题,如果我的文件中有返回行,则代码不适用注释限制,例如:
import re
s = '''
AccountingStoragePort=8544
AccountingStorageUser=root
#Name=touktouk Cards=45 Files=2015 State=UNKNOWN
Name=touktouk Cards=45 Files=2017 State=UNKNOWN
'''
match = re.search(r'^[^#].*\bFiles=(\d+)', s, flags=re.MULTILINE)
if match:
value = match.group(1)
print (value)
该计划将于2015年返回2017年
答案 0 :(得分:1)
您可以使用re.search
。如果值为数字且变量发生1次或更少,请使用:
import re
s = '''AccountingStoragePort=8544
AccountingStorageUser=root
Name=touktouk Cards=45 Files=2015 State=UNKNOWN'''
match = re.search(r'\bFiles=(\d+)', s)
if match:
value = match.group(1)
print value
答案 1 :(得分:0)
更多
import re
with open(file.txt) as f:
kvlist = re.split(r'\s+', f.read())
pairs = [kvpair.split('=') for kvpair in kvlist]
kvdict = {pair[0]:pair[1] for pair in pairs}
print(kvdict['Files'])
这应该为您提供一个完整的字典,以便在其他值上重复使用。