首页 > 解决方案 > 删除python中没有字典格式的任何行

问题描述

我正在阅读一个多行文本文件,其格式为“变量:值”作为python中的字典;但我想删除任何没有这种格式的行。我已经尝试过了,但问题是如果我们有一行包含冒号但它不是 variable:value 格式,它将不会被删除。有什么建议么?代码:

with open("file.setup",'r') as f_in:
    lines = [l for l in f_in if ":" in l]
with open("file.setup",'w') as f_in:
    f_in.writelines(lines)

file_to_read:/ra1/file.rpt
group_size:2
dpx:No
version:4

标签: python

解决方案


我会在这里使用正则表达式。我假设变量只能包含数字、字母和下划线,并且可以是任何字符。

>>> import re
>>>
>>> regex = re.compile(r"\w+:.+")
>>> regex.search("file_to_read:/ra1/file.rpt")
<re.Match object; span=(0, 26), match='file_to_read:/ra1/file.rpt'>
>>> regex.search("group_size:2")
<re.Match object; span=(0, 12), match='group_size:2'>
>>> regex.search(":")

您可以遍历这些行并检查此正则表达式以确保该行是变量:值格式。

>>> import re
>>>
>>> pattern = re.compile(r"\w+:.+")
>>> with open("file.setup",'r') as f_in:
...     lines = [l for l in f_in if pattern.search(l)]

推荐阅读