如何匹配文件中的多行部分并在 Python 中使用正则表达式将其删除?

AG编程爱好者

我有一个 INI 文件,其中包含 [] 中提到的部分,并以 key = value 的方式变量。在其中,我有一个名为 [FILES] 的部分,其中只有一些文件(带有 .ini 扩展名)路径在它下面提到,没有任何键值对。

使用 Python 的 configpaser 模块,由于 [FILES] 部分,我无法解析它。因此,我试图通过将其替换为空白来从文件中删除该部分。

ini 文件如下所示,可能有也可能没有在 [FILES] 下定义的部分

[ABC]
p1 = 2 
p2 = 3

[DEF]
q1= 4
q2 = queue

[FILES]
$PWD/../log/inc1-ww.ini
inc2.ini
/home/user/inputs/inc_new.ini
[PQR]
x= xyz
y = 2                                 

我正在尝试下面的代码,但是在 [FILES] 之后定义的部分也出现了,任何纠正正则表达式并将其从文件中删除的帮助都将有很大帮助:

import re 
txt = open('my.ini', "r")
data = txt.read()
txt.close()

regex = re.compile(r'^(\[FILES\])[\n\r]([$-_a-zA-Z0-9\/\.\n\r]+)', re.MULTILINE)
matches = [] 
for m in regex.finditer(data):
    matches.append(m.groups())

提前致谢!

AKX

这真的不值得用正则表达式来做;如果您甚至不能使用 ConfigParser allow_no_value,请阅读文件并忽略该FILES部分中的所有行

import io

data = io.StringIO("""
[ABC]
p1 = 2 
p2 = 3

[DEF]
q1= 4
q2 = queue

[FILES]
$PWD/../log/inc1-ww.ini
inc2.ini
/home/user/inputs/inc_new.ini
[PQR]
x= xyz
y = 2
""".strip()
)

current_section = None
for line in data:
    line = line.rstrip()
    if line.startswith("["):
        current_section = line.strip("[]")
    if current_section != "FILES":
        print(line)

这输出

[ABC]      
p1 = 2     
p2 = 3     
           
[DEF]      
q1= 4      
q2 = queue 
           
[PQR]      
x= xyz     
y = 2

(您可以写入文件或附加到列表而不是print()ing 行。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从摘要中搜索 png 图像并在 python 中使用正则表达式将其删除?

在python 3中使用正则表达式从文本中删除CSS

如何删除除字母、数字和 ! ? . ; , @ ' 在 python pandas df 中使用正则表达式?

如何在 Python 中使用正则表达式删除右方括号?

如何在python中使用正则表达式删除括号内的文本?

如何在python中使用正则表达式删除字母并提取数字?

如何在python中使用正则表达式删除字母以外的所有字符

如何在python中使用正则表达式删除字符串的右侧元素?

在 Python 中的列表理解中使用正则表达式删除字符

如何在python中使用正则表达式?

如何在python中使用正则表达式从多行字符串中删除特定字符

删除管道前的所有字符,并在python中使用正则表达式删除管道

使用正则表达式 Python 从表达式中删除字符

如何在 Python 中使用正则表达式删除 URL 的一部分?

正则表达式 - 使用正则表达式从 python 列表中删除日期和时间

如何在python中使用正则表达式从许多文档中删除类似的页脚

python正则表达式删除匹配的括号文件

如何在python中使用正则表达式删除除某些特殊字符之外的所有特殊字符

如何在python中使用正则表达式删除包含数字后跟字符的标记?

在python中使用正则表达式删除字符串中不同长度的十六进制

如何在python中使用正则表达式从csv文件中获取数据

如何在python正则表达式中使用多行标志?

如何在 Python 中使用正则表达式搜索多行

在python中使用正则表达式匹配文件名

如何在python中使用正则表达式re.sub()可选匹配组?

如何在 Python 中使用正则表达式提取指定的匹配项?

如何在 Python 中使用正则表达式动态匹配整个单词

如何在python中使用正则表达式正确匹配序列?

如何在python中使用正则表达式匹配可选的整个电话号码