Python:在将re.substitute用作模板时,请保持行格式(断行)

时间:2019-03-27 01:24:48

标签: python templates string-formatting

我正在从多个文件中获取有关点的信息,并基于模板为每个点创建新文件。有问题的文件看起来像这样

...
Point number:"Number" {
 info
 info
}
...
Point number:"Number" {
 info
 info 
 info
 info
}
...
etc

信息行的数量可以变化。

我正在使用re.findall()搜索类似这样的点

point_info = re.findall(r"(?ms)^P.*?{$.*?^};$", file.read())

但是当我尝试将其放入模板时,我会得到

['Point number:"Number" { \n  info \n  info \n  info \n  info \n }']

我使用.substitute将信息插入模板。模板看起来像这样

Template
... 
...
...
$point_info 
...
...

同时输入代码

d = {'point_info ': point_info }
result = src.substitute(d)
output_file.write(result) #opened beforehand

在记住行数可以不同的情况下,如何使输出看起来与主文件完全一样? (模板还有许多其他$ variables,只是这里未提及)

1 个答案:

答案 0 :(得分:0)

我设法使用.join()函数解决了这个问题。 data want; set have; array V varr1-varr3; call SYMPUTN('countxxx',dim(V)) /* here I try set numeric*/ array L[&countxxx.] _temporary_;/* here input numeric*/ * save first rows values in temporary array for use in other rows; if _n_ = 1 then do index = 1 to dim(V); L[index] = V[index]; end; * … for example … ; array delta_from_1st [&countxxx.]; * array statement implicitly creates three new variables that become part of PDV and get output; do index = 1 to dim(V); delta_from_1st[index] = V[index] - L[index]; end; run; 给了我预期的结果