多个src上的Python正则表达到目标

时间:2015-08-28 16:41:15

标签: python regex file

我一直在阅读数千篇试图找到最佳解决方案的帖子。 如果以前曾多次询问此问题的性质,我深表歉意。

我有一个文件,我把占位符放入。文件是200行,在这个文件中有一个部分,我有propertyNames和相应的propertyValuespropertyValues是我想要查找的占位符并用实际值替换。 我想我会使用fileinputre模块来执行此操作,但我不想多次逐行解析以填充多个propertyValues。相反,我认为我搜索多个字符串及其相应的替换文本会更有效率,如果它找到任何实例,则会通过线条进行扫描,以替换其相应的替换。 最好的方法是什么?是否可以使用fileinputre

以简单的方式完成

2 个答案:

答案 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

如果您想要另一种方法来优化程序的速度,我建议

  1. 做并行计算,
  2. 使用任何提供JIT编译的正则表达式引擎(如果你有复杂的正则表达式)。