我一直在阅读数千篇试图找到最佳解决方案的帖子。 如果以前曾多次询问此问题的性质,我深表歉意。
我有一个文件,我把占位符放入。文件是200行,在这个文件中有一个部分,我有propertyNames
和相应的propertyValues
。 propertyValues
是我想要查找的占位符并用实际值替换。
我想我会使用fileinput
和re
模块来执行此操作,但我不想多次逐行解析以填充多个propertyValues
。相反,我认为我搜索多个字符串及其相应的替换文本会更有效率,如果它找到任何实例,则会通过线条进行扫描,以替换其相应的替换。
最好的方法是什么?是否可以使用fileinput
和re
?
答案 0 :(得分:0)
我会使用jinja。它是一个模板引擎,允许您执行此操作以及更多功能(例如在模板中使用for循环等)。
看看:http://jinja.pocoo.org/docs/dev/templates/
当然,这需要更改输入文件格式。如果你被允许这样做,我认为这是要走的路。
答案 1 :(得分:0)
据我了解你的问题,有两种情况
首先:逐行搜索和替换
$place_holders=[]
find_and_replace():
for $line in $file:
for $text in $line:
if $text == "Target text":
$place_holders.add($text.get_place_holder)
if place_holders.size != 0:
for $place_holder in $place_holders:
replace "New text" at position $place_holder
$place_holders=[]
第二:搜索所有行然后替换
find_and_replace():
for $line in $file:
for $text in $line
if $text == "Target text":
$place_holders.add($text.get_place_holder)
if $place_holders.size != 0:
for $place_holder in $place_holders:
replace "New text" at position $place_holder
$place_holders=[]
上述代码之间有什么区别?
是的,您问过多少次“place_holders
列表是空的?” 第一次案例询问file.number_of_line
次,而第二次案件只询问一次。我认为这应该对正则表达式的速度有很小的意义。
注意上面的代码只是在您的问题中简单演示了scenerio,无法保证正则表达式引擎能够以这种方式工作。
<强> BUT 强>
如果您想要另一种方法来优化程序的速度,我建议