Python - Как использовать регулярное выражение в файле, строка за строкой, в Python
Пытался использовать другой заголовок для вопроса, но если вы можете улучшить вопрос, сделайте это.
Вот мое регулярное выражение: f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)
Мне пришлось бы применять это в файле, строко за строкой. Строка за строкой в порядке, простое чтение из файла и цикл. Но как применить регулярное выражение к строкам?
Спасибо за помощь, и извините за вопрос noob.
Ответы
Ответ 1
Следующее выражение возвращает список; каждая запись этого списка содержит все совпадения вашего регулярного выражения в соответствующей строке.
>>> import re
>>> [re.findall(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)',line)
for line in open('file.txt')]
Ответ 2
Вы можете попробовать что-то вроде этого:
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)
Ответ 3
import re
with open('file.txt') as f:
for line in f:
match = re.search('f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)', line)
Обратите внимание, что Python автоматически компилирует и кэширует регулярное выражение, поэтому в этом случае отдельный шаг компиляции не требуется.
Ответ 4
Другой способ сделать
import re
[line for line in open('file.txt') if re.match(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)',line)]
Ответ 5
используйте 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
Ответ 6
Я использовал этот aproach:
import re
#Define the search term:
pattern = f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)
#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))
Ответ 7
for line in file:
line = re
.match("f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)",line)
.group(0)