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))
精彩评论