Python - 字符串

时间:2015-09-16 08:12:50

标签: python string indexing

我有一个字符串列表,我想提取:" 000000_5.612230" of:

A = '/calibration/test_min000000_5.612230.jpeg'

随着弦乐的大小发展,我试着监视" n"的位置。 " min"。我尝试用以下方法获得良好的指数:

print sorted(A, key=len).index('n')

但我得到了" 11"这对应于" n" "校准"。我想知道如何获得字符串的最大索引值?

5 个答案:

答案 0 :(得分:4)

很难回答,因为您没有指定文件名的哪个部分保持不变以及哪些内容可能会发生变化。它总是一个jpeg?数字总是最后一部分?它始终以'_min'开头吗?

无论如何,我建议改用正则表达式:

import re

A = '/calibration/test_min000000_5.612230.jpeg'
p = re.compile('.*min([_\d\.]*)\.jpeg')
value = p.search(A).group(1)
print value

输出:

000000_5.612230

请注意,此代码段假定始终找到匹配项,如果文件名不包含该模式,则p.search(...)将返回None并引发异常,您将检查该代码情况下。

答案 1 :(得分:2)

您可以使用re模块和正则表达式来执行此操作,例如:

import re

A = '/calibration/test_min000000_5.612230.jpeg'
text = re.findall('\d.*\d', A)

现在,text是一个列表。如果您打印它,输出将如下所示:['000000_5.612230']

因此,如果您想要提取它,只需执行此操作或使用for

import re

A = '/calibration/test_min000000_5.612230.jpeg'
text = re.findall('\d.*\d', A)

print text[0]

答案 2 :(得分:1)

字符串切片似乎是一个很好的解决方案

>>> A = '/calibration/test_min000000_5.612230.jpeg'
>>> start = A.index('min') + len('min')
>>> end = A.index('.jpeg')
>>> A[start:end]
'000000_5.612230'

避免必须导入重新

答案 3 :(得分:1)

尝试此操作(如果扩展程序始终是' .jpeg'):

A.split('test_min')[1][:-5]

答案 4 :(得分:0)

如果您的字符串在结尾处是常规字符,则可以使用负数索引slice the string

>>> a = '/calibration/test_min000000_5.612230.jpeg'
>>> a[-20:-5]
'000000_5.612230'