我正在尝试使用python修改js文件中的特定行。
这是js文件:
...
hide: [""]
...
这是我的python代码:
with open('./config.js','r') as f:
lines = f.readlines()
with open('./config.js','w') as f:
for line in lines:
line = line.replace('hide', 'something')
f.write(line)
因此可以,但这不是我想要的。
我想在方括号之间写“东西”,而不是替换“隐藏”。
所以我不知道该怎么做:我是否必须替换整行,还是可以在方括号之间添加一个单词?
谢谢
答案 0 :(得分:4)
如果要在此行替换文本,可以执行以下操作:
with open('./config.js','r') as f:
lines = f.readlines()
with open('./config.js','w') as f:
new_value = 'Something New'
for line in lines:
if line.startswith('hide'):
line = 'hide: ["{}"]'.format(new_value)
f.write(line)
或有条件的
if line.startswith('hide'):
line = line.replace('""', '"Something new"')
以下是替换hide
括号中任何以任何空格开头的值的方法。
lines = '''\
first line
hide: [""]
hide: ["something"]
last line\
'''
new_value = 'new value'
for line in lines.splitlines():
if line.strip().startswith('hide'):
line = line[:line.index('[')+2] + new_value + line[line.index(']')-1:]
print(line)
输出:
first line
hide: ["new value"]
hide: ["new value"]
last line
答案 1 :(得分:1)
如果hide: [""]
不明确,则只需加载整个文件,然后替换并写回即可:
newline = 'Something new'
with open('./config.js','r') as f:
txt = f.read()
txt = txt.replace('hide: [""]', 'hide: ["' + newline + '"]')
with open('./config.js','w') as f:
f.write(txt)
答案 2 :(得分:0)
您可以使用re.sub()
import re
with open('./config.js','r') as f:
lines = f.readlines()
with open('./config.js','w') as f:
for line in lines:
line = re.sub(r'(\[")("\])', r'\1' + 'something' + r'\2', line)
f.write(line)
它可以通过搜索正则表达式来工作,但是可以根据需要在左侧((\[")
和右侧(("\])
)上形成一个组。然后,您将要插入的文本的任意一侧连接起来(在此示例中为'something'
)。
边界( )
构成了一个可以用r'\1'
替换的组,然后第二个组是r'\2'
。
答案 3 :(得分:0)
只要您没有“隐藏”文件中的其他任何地方,您就可以做到
with open('/config.js','r') as f:
lines = f.readlines()
with open('./config.js','w') as f:
for line in lines:
line = line.replace('hide [""]', 'hide ["something"]')
f.write(line)
答案 4 :(得分:0)
您可以使用fileinput
并就地替换它:
import fileinput
import sys
def replaceAll(file,searchExp,replaceExp):
for line in fileinput.input(file, inplace=1):
if searchExp in line:
line = line.replace(searchExp,replaceExp)
sys.stdout.write(line)
replaceAll("config.js",'hide: [""]','hide: ["something"]')