Python - 如何在Python中逐行使用regexp

Apa*_*che 18 python regex

试图对问题使用不同的标题,但如果您可以改进问题,请这样做.

这是我的正则表达式: f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)

我必须逐行在文件上应用它.逐行是正常的,从文件中读取简单,循环.但是如何将正则表达式应用于线条呢?

感谢所有的帮助,并对noob问题感到抱歉.

phy*_*nfo 23

以下表达式返回一个列表; 该列表的每个条目都包含相应行中正则表达式的所有匹配项.

>>> import re
>>> [re.findall(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)',line) 
            for line in open('file.txt')]
Run Code Online (Sandbox Code Playgroud)


Céd*_*ien 9

你可以尝试这样的事情:

import re
regex = re.compile("f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)")
with open("my_file.txt") as f:
    for line in f:
        result = regex.search(line)
Run Code Online (Sandbox Code Playgroud)


Mik*_*ton 8

import re
with open('file.txt') as f:
    for line in f:
        match = re.search('f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)', line)
Run Code Online (Sandbox Code Playgroud)

请注意,Python会自动编译和缓存正则表达式,因此在这种情况下不需要单独的编译步骤.


小智 5

另一种方法

import re
[line for line in open('file.txt') if re.match(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)',line)]
Run Code Online (Sandbox Code Playgroud)


wim*_*wim 3

使用import re,然后re.compile()将您的模式作为参数,并match在每一行上使用结果对象的属性。像这样的东西..

import re 
pat = re.compile(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)')
for line in file:
  # use pat.match, pat.search .. etc
Run Code Online (Sandbox Code Playgroud)