Python-如何在Python中逐行对文件使用regexp

2024-06-08 11:25:48 发布

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

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

这是我的regexp:f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)

我得一行一行地把这个应用到一个文件上。一行行一行地读取文件和循环就可以了。但是如何将regexp应用于行呢?

谢谢你的帮助,也很抱歉没有问题。


Tags: 文件标题regexp一行行
3条回答
import re
with open('file.txt') as f:
    for line in f:
        match = re.search('f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)', line)

注意,Python会自动编译和缓存regex,因此在这种情况下不需要单独的编译步骤。

你可以试试这样的方法:

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)

下面的表达式返回一个列表;该列表的每个条目都包含相应行中regexp的所有匹配项。

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

相关问题 更多 >