如何使用Python切片提取字符串中的位置列表

时间:2011-04-18 23:56:01

标签: python string indexing

我有两个字符串:

a='1234512345'

b='abcdefghik'

我想在字符串“a”中搜索“1”的出现,然后打印与该索引相对应的“b”的位置,即

'af'

我可以用

import re

starts=[match.start() for match in re.finditer(re.escape('1'), a)]

发现位置[0,5]中出现'1'。我如何使用此信息从字符串“b”中提取“af”

7 个答案:

答案 0 :(得分:1)

你可以这样做:

''.join(b[x] for x in starts)

但我会建议这样做:

a='1234512345'
b='abcdefghik'

''.join(y for (x, y) in zip(a, b) if x == '1')

答案 1 :(得分:1)

>>> a='1234512345'
>>> b='abcdefghik'
>>> [ j for i,j in zip(a,b) if i=="1" ]
['a', 'f']

答案 2 :(得分:0)

In [11]: a='1234512345'    
In [12]: b='abcdefghik'

In [16]: ''.join(b[i] for i,num in enumerate(a) if num=='1')
Out[16]: 'af'

或者,如果你真的想使用正则表达式:

In [21]: ''.join(b[match.start()] for match in re.finditer(re.escape('1'), a))
Out[21]: 'af'

答案 3 :(得分:0)

import re
a='1234512345'

b='abcdefghik'

starts= [ b[i] for i in [ match.start() for match in re.finditer(re.escape('1'), a)]]
print ''.join(starts)

答案 4 :(得分:0)

"".join(b[i] for i in range(min(len(a), len(b))) if a[i] == "1")

答案 5 :(得分:0)

像这样?

a='1234512345'

b='abcdefghik'

for char in a:
    n = -1
    for subc in a:
        n=n+1
        if subc == char:
            print b[n],
    print

产生

a f
b g
c h
d i
e k
a f
b g
c h
d i
e k

答案 6 :(得分:0)

如果你必须为a的一些值重复这个,那么构建字典比循环a和{{1}更有效((O(n))重复(O(n * n))

b