Python检查行(两个关键字)是否存在,忽略行之间的空格

2024-06-13 11:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我的示例文件有一个结构:

Library      Collections
Library      XML    use_lxml=True
Library      ute_wtssim
Library      libraries.ta_infomodel
Library      ute_tshark
Library      PDMLChecker.py
Library    libraries.ta_ue_configuration
Library      libraries.ta_tshark
Library    libraries.ta_file_system
Resource     environment_setup.robot
Variables    ../tshark_filters.py
Variables    ../global_variables.py
Variables    tracing_tshark_filters.py

我想在文件行中找到:Library libraries.ta_infomodel忽略空白(列宽,不是常量)。你知道吗

你能给我一些建议吗?你知道吗

编辑: 我想检查一下线路是否存在。。。 包含两个关键字的行,忽略两个关键字之间的空格。你知道吗


Tags: 文件py示例librarieslibrary关键字xmlvariables
3条回答

也可以通过列表理解来完成

import re
lines = open(fname, 'r').readlines()
found = [s for s in lines if re.match(".* Library\s+libraries\.ta_infomodel.*", s)]

只需使用\s*\s代表空格。*表示任意数量的(包括零):

import re
s = '''Library      Collections
Library      XML    use_lxml=True
Library      ute_wtssim
Library      libraries.ta_infomodel
Library      ute_tshark
Library      PDMLChecker.py
Library      resources.DevWro1.pdml_validation.PdmlValidation
Library    libraries.ta_ue_configuration
Library      libraries.ta_tshark
Library    libraries.ta_file_system
Resource     environment_setup.robot
Variables    ../tshark_filters.py
Variables    ../global_variables.py
Variables    tracing_tshark_filters.py'''

matches = re.findall('Library\s*libraries\.ta_infomodel', s)

for match in matches:
    print(match)

试试这个:

content = """
Library      Collections
Library      XML    use_lxml=True
Library      ute_wtssim
Library      libraries.ta_infomodel
Library      ute_tshark
Library      PDMLChecker.py
Library      resources.DevWro1.pdml_validation.PdmlValidation
Library    libraries.ta_ue_configuration
Library      libraries.ta_tshark
Library    libraries.ta_file_system
Resource     environment_setup.robot
Variables    ../tshark_filters.py
Variables    ../global_variables.py
Variables    tracing_tshark_filters.py
"""

import re
regex = re.compile(r'Library\s+libraries\.ta_infomodel')
line = regex.search(content)

一些解释。为了通过正则表达式找到一行,应该使用re.search,对于许多re.findall。你知道吗

\s+-对于几个空格。你知道吗

\.-表示点。使用必须添加斜杠,因为只有点表示任何字符。你知道吗

相关问题 更多 >