[英]Python replace string inside file itself using regular expression
我在 RedHat Linux 服务器上开发,安装的 Python 版本是2.6 。 我有一个 Python 脚本,它必须替换文件.sql
的字符串。 每次运行 Python 脚本时,我都会传递一个不同的参数,该参数必须替换同一个.sql
文件中最旧的值。
文件 .sql 有这样的内容:
SELECT * FROM MY_TABLE WHERE 1=1
AND '1234567890' BETWEEN START_VALUE AND END_VALUE
AND JOB = 'EMPLOYEE';
我不想使用一些临时文件进行详细说明,我应该阅读 .sql 并根据上下文对其进行修改。
我搜索了其他帖子,但从未找到最终解决方案。 我尝试使用re.sub
但我没有找到如何在.sql
进行替换。
我不知道这是否适用于 2.6 - 抱歉。 我对 RedHat Server 也一无所知 - 抱歉。 而且我对 SQL 了解不多 - 抱歉。 这不顺利吧? :o) 但如果这有帮助的话......
给定一个包含...的 test.sql 文件
DECLARE
@START_VALUE = 100
@END_VALUE = 200
SELECT * FROM MY_TABLE WHERE 1=1
AND '1234567890' BETWEEN START_VALUE AND END_VALUE
AND JOB = 'EMPLOYEE';
你可以试试...
import re
# Read data from file
with open('test.sql', 'r') as file:
data = file.read()
print(data)
data = re.sub(r'@END_VALUE = (\d+)', r'@END_VALUE = 555', data)
print()
print('After the change...')
print()
print(data)
# Write data back
with open('test.sql', 'w') as file:
file.write(data)
输出:
DECLARE
@START_VALUE = 100
@END_VALUE = 200
SELECT * FROM MY_TABLE WHERE 1=1
AND '1234567890' BETWEEN START_VALUE AND END_VALUE
AND JOB = 'EMPLOYEE';
After the change...
DECLARE
@START_VALUE = 100
@END_VALUE = 555
SELECT * FROM MY_TABLE WHERE 1=1
AND '1234567890' BETWEEN START_VALUE AND END_VALUE
AND JOB = 'EMPLOYEE';
请注意,END_VALUE 从“200”更改为“555”。 如果您尝试并出现错误,请查看错误部分并找到在 Python 2.x 等中执行此操作的等效方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.