【发布时间】:2016-02-28 20:52:36
【问题描述】:
如何在 Python 中使用正则表达式替换文件中的字符串?
我想打开一个文件,我应该在其中用其他字符串替换字符串,我们需要使用正则表达式(搜索和替换)。打开文件并将其与搜索和替换方法一起使用的示例是什么?
【问题讨论】:
-
re.sub 是你想要的功能
-
@Arman 我想你的意思是
re.sub。
如何在 Python 中使用正则表达式替换文件中的字符串?
我想打开一个文件,我应该在其中用其他字符串替换字符串,我们需要使用正则表达式(搜索和替换)。打开文件并将其与搜索和替换方法一起使用的示例是什么?
【问题讨论】:
re.sub。
# The following code will search 'MM/DD/YYYY' (e.g. 11/30/2016 or NOV/30/2016, etc ),
# and replace with 'MM-DD-YYYY' in multi-line mode.
import re
with open ('input.txt', 'r' ) as f:
content = f.read()
content_new = re.sub('(\d{2}|[a-yA-Y]{3})\/(\d{2})\/(\d{4})', r'\1-\2-\3', content, flags = re.M)
【讨论】:
\d{2}(适用于 11)或 \w{3}(适用于 nov)
11/30/2016。
r,在这个具体场景下,没有区别。有一个线程,你可以看看:stackoverflow.com/questions/8157267/…
这是一个通用格式。您可以根据需要使用 re.sub 或 re.match。以下是打开文件并执行此操作的一般模式:
import re
input_file = open("input.h", "r")
output_file = open("output.h.h", "w")
br = 0
ot = 0
for line in input_file:
match_br = re.match(r'\s*#define .*_BR (0x[a-zA-Z_0-9]{8})', line) # Should be your regular expression
match_ot = re.match(r'\s*#define (.*)_OT (0x[a-zA-Z_0-9]+)', line) # Second regular expression
if match_br:
br = match_br.group(1)
# Do something
elif match_ot:
ot = match_ot.group(2)
# Do your replacement
else:
output_file.write(line)
【讨论】: