[英]How to use regexp on file, line by line, in Python
这是我的正则表达式: f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)
我必须逐行将其应用于文件。 一行一行就OK了,简单的从文件中读取,一个循环。 但是如何将正则表达式应用于这些行?
感谢您的所有帮助,并对菜鸟问题感到抱歉。
以下表达式返回一个列表; 该列表的每个条目都包含相应行中正则表达式的所有匹配项。
>>> import re
>>> [re.findall(r'f\(\s*([^,]+)\s*,\s*([^,]+)\s*\)',line)
for line in open('file.txt')]
你可以尝试这样的事情:
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)
请注意,Python 会自动编译并缓存正则表达式,因此在这种情况下不需要单独的编译步骤。
另一种方法
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)
使用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
我使用了这种方法:
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))
我很困惑
for line in file
所有答案都包括上述行,但此代码行中的行是单个字符而不是整行。 如果文件有
for line in file
line 中仅选择 'T' 并且在下一次迭代中仅选择 'h' 而不是整个第一行 'This is first line'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.