开发者

How to use regexp on file, line by line, in Python

Here is my regexp: f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)

I'd have to apply this on a file, line by line. The line by line is OK, simple reading from file, and a loop. But how do I apply the regexp to the lines?

Thanks for开发者_如何转开发 all the help, and sorry for the noob question.


The following expression returns a list; every entry of that list contains all matches of your regexp in the respective line.

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


You can try something like this :

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)


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

Note that Python automatically compiles and caches the regex, so a separate compile step is not required in this case.


Another way to do

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


use import re, then re.compile() with your pattern as an argument, and use the resulting object's match attribute on each line. something like this..

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


for line in file:
   line = re
           .match("f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)",line)
           .group(0)


I have used this aproach:

import re
#Define the search term:
pattern = r"f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)" #pattern must be enclosed in quotes

#Create an empty list:
data = []

#then

for line in open(r'file.txt'):
    if line !='':  #<-- To make sure the whole file is read
        word = re.findall(pattFinder1, line)
        data.append(str(word))   
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜