我正在编写一个Python脚本,用来将某种格式的XML文件转换为JSON格式。这个练习来自麻省理工学院缺失的一个学期。(xml_to_json)
我遇到了一个关于如何在shell中替换regex模式中的值的问题。(我正在使用python中的子进程库来访问shell sed程序)
我使用了Python库“subprocess”,并按如下所示进行了操作。
# xml_to_json.py
num = 1001(or it could be other numbers)
subprocess.call(["sed","-E","-i","","${num}s/,$//","example-data.xml"])
我尝试做的是使用变量“num”,将值替换到此位置(${num}),以便可以替换为特定行号。
我知道你可以像这样在shell中使用变量($variable),但是它在这里似乎不起作用。
我知道我可以定义一个行号的范围,在其中我想做'sed'工作,如“%1,100 s/regexpattern/regex/"。
如何使用变量将行号放在's'前面?
1条答案
按热度按时间zwghvu4y1#
num
不是shell变量,而是python变量,只需在python中构建参数字符串,使其包含正确的值:或使用f弦:
注意,不小心将值插入shell命令可能会导致命令注入,在这种情况下似乎是安全的,因为
num
是一个简单的数值,而不是用户提供的数据。