python - 在文本文件中查找值

标签 python file parsing text

我必须在文本文件中找到变量的值。

我的文件采用以下形式:

AccountingStoragePort=8544
AccountingStorageUser=root
Name=touktouk Cards=45 Files=2015 State=UNKNOWN

如何获取例如 Files 的值(2015 年)

在此文件中,有 1 个“变量”/行或多个以空格分隔的“变量”。每个值都是唯一的(我的文件中没有 2 个文件)

另一方面,“Files”可以在任何行 => 例如第 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 年

最佳答案

您可以使用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

关于python - 在文本文件中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573164/

相关文章:

linux - bash循环仅在最后一个文件上执行命令

python - 如果文件不存在则创建文件,然后以 RW 模式打开该文件

Python解析未知类型的缩进C文件

java - Java 中的地址解析器

java - 元组,从 Python 到 Java

python - Map-Reduce/Hadoop 按整数值排序(使用 MRJob)

c++ - 将 unicode 字符/字符串写入文件

python - 使用 Python,我如何评估压缩前缀符号形式的表达式?

python - Pandas:找到最大值的列名,我需要过滤带有星号文本的列?

python - 如何在 shutil.copytree 中编写忽略的回调函数