Python 如何快速搜索列表元素中的子字符串?

Python 如何快速搜索列表元素中的子字符串?,python,python-2.7,search,Python,Python 2.7,Search,我有一些数据如下: data = [ 'HTTP/1.1 200 OK', 'CACHE-CONTROL: max-age=1810', 'DATE: Wed, 14 May 2014 12:15:19 GMT', 'EXT:', 'LOCATION: http://192.168.94.57:9000/DeviceDescription.xml', 'SERVER: Windows NT/5.0, UPnP/1.0, pvConnect UPnP

我有一些数据如下:

data = [
    'HTTP/1.1 200 OK',
    'CACHE-CONTROL: max-age=1810',
    'DATE: Wed, 14 May 2014 12:15:19 GMT',
    'EXT:',
    'LOCATION: http://192.168.94.57:9000/DeviceDescription.xml',
    'SERVER: Windows NT/5.0, UPnP/1.0, pvConnect UPnP SDK/1.0',
    'ST: uuid:7076436f-6e65-1063-8074-78542e239ff5',
    'USN: uuid:7076436f-6e65-1063-8074-78542e239ff5',
    'Content-Length: 0',
    '',
    ''
]
我必须从中提取“.xml”链接

我的代码是:

for element in data:
    if 'LOCATION' in element:
        xmllink = element.split(': ').[1]

这花费了太多的时间-我怎样才能使这更快速?

通常的警告是

  • 过早优化是万恶之源,而且
  • Python是为舒适而设计的,不是为了速度
  • 这应该快一点:

    for element in data:
        if element.startswith('LOCATION: '):
            xmllink = element[10:]  # len('LOCATION: ') == 10
            break
    

    。。。但是,与您的代码一样,如果
    位置:
    后面没有一个空格,或者在许多其他情况下,数据可能会出现,也可能不会出现,那么它将中断。

    顺便说一句,您应该复制粘贴代码,而不是重新键入它。。。上面的输入错误会导致语法错误,因此它根本不会运行(更不用说快速)。
    下一步(d.partition(':')[-1]。如果d.startswith('LOCATION'),则数据中d的strip()是一种非常易读且短的方法,可以获得完全相同的答案,但速度“慢得多”,大约为每一百万次迭代1.5秒。有利的一面是它对
    位置:
    位置:\速度真的是个问题吗?