【问题标题】:Python Function To Find String Between Two Markers [duplicate]Python函数在两个标记之间查找字符串[重复]
【发布时间】:2011-12-02 02:43:31
【问题描述】:

我正在寻找构建一个字符串函数来提取两个标记之间的字符串内容。它返回一个提取列表

def extract(raw_string, start_marker, end_marker):
    ... function ...
    return extraction_list

我知道这可以使用正则表达式来完成,但是这么快吗?在我的过程中,这将被调用数十亿次。最快的方法是什么?

如果标记相同且出现次数为奇数,会发生什么情况?

如果开始和结束标记出现多次,函数应该返回多个字符串。

【问题讨论】:

  • “十亿”?真的吗?也许你应该把它写成一个 C 扩展。
  • 不再像数百万。 “既然可以拥有数百万,为什么还要拥有数十亿”

标签: python regex string


【解决方案1】:

你可能不能比:

def extract(raw_string, start_marker, end_marker):
    start = raw_string.index(start_marker) + len(start_marker)
    end = raw_string.index(end_marker, start)
    return raw_string[start:end]

但是,如果您想尝试正则表达式,只需尝试对其进行基准测试。有一个很好的 timeit 模块。

【讨论】:

  • 同意。如果您的正则表达式是预编译的,它可能不会比这慢,但是使用@viraraptor 的解决方案可以避免任何可能发生的正则表达式开销。我不确定python的re有没有这个,但这也更容易阅读和维护。
  • 谢谢@viraraptor 我喜欢这种索引的使用,而且你已经考虑了多个字符的标记。如果开始和结束标记出现不止一次会发生什么?例如,名称的多个 ' 引号。您想返回引号中的项目列表
猜你喜欢
  • 2017-07-07
  • 2011-03-23
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 2015-02-05
  • 1970-01-01
相关资源
最近更新 更多