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)]
for line in file:
line = re
.match("f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)",line)
.group(0)
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
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))
I am confused
for line in file
All answers include above line but line in this code line is single character and not the whole line. if file has
for line in file
line selects only 'T' and in next iteration only 'h' instead of whole first line 'This is first line'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.