簡體   English   中英

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

[英]How to use Python slice to extract a list of positions in a string

我有兩個字符串:

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”

你可以這樣做:

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

但我建議這樣做:

a='1234512345'
b='abcdefghik'

''.join(y for (x, y) in zip(a, b) if x == '1')
>>> a='1234512345'
>>> b='abcdefghik'
>>> [ j for i,j in zip(a,b) if i=="1" ]
['a', 'f']
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'
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)
"".join(b[i] for i in range(min(len(a), len(b))) if a[i] == "1")

像這樣?

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

如果你需要重復此為幾個值a ,這將是更有效的((O(N))來構建字典,而不是通過環ab反復(O(N * N))

>>> a='1234512345'
>>> b='abcdefghik'
>>> from collections import defaultdict
>>> D=defaultdict(str)
>>> for i,j in zip(a,b):
...  D[i]+=j
... 
>>> D['1']
'af'
>>> D['2']
'bg'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM